BIO与NIO的方式实现文件拷贝

2023-05-16

面试题 - 编程实现文件拷贝。(这个题目在笔试的时候经常出现,下面的代码给出了两种实现方案)

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public final class Main {

    private Main() {
        throw new AssertionError();
    }

  /**
     * IO文件拷贝
     * @param source 被拷贝的源文件
     * @param target 拷贝出来的目的文件
     * @throws IOException
     */
    public static void fileCopy(String source, String target) throws IOException {
          InputStream in = new FileInputStream(source);
          OutputStream out = new FileOutputStream(target);
          byte[] buffer = new byte[4096];
          int bytesToRead;
          while((bytesToRead = in.read(buffer)) != -1) {
              out.write(buffer, 0, bytesToRead);
          }
      }
/**
     * nio实现文件拷贝
     * @param source
     * @param target
     * @throws IOException
     */
     public static void fileCopyNIO(String source, String target) throws IOException {
         FileInputStream in = new FileInputStream(source);
         FileOutputStream out = new FileOutputStream(target);
         FileChannel inChannel = in.getChannel();
         FileChannel outChannel = out.getChannel();
         ByteBuffer buffer = ByteBuffer.allocate(4096);
         while(inChannel.read(buffer) != -1) {
             buffer.flip();
             outChannel.write(buffer);
             buffer.clear();
         }
      }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BIO与NIO的方式实现文件拷贝 的相关文章

随机推荐

  • TensorFlow on Android:训练模型

    文章推荐 运营专题 零预算引爆个人和企业品牌 原文链接 Selenium 自动化测试从零实战 原文链接 原来这样做 xff0c 才能向架构师靠近 原文链接 Cordova App 打包全揭秘 原文链接 TensorFlow on Andro
  • 深入理解 MySQL 底层实现

    本文来自作者 默默 在 GitChat 上分享 深入理解 MySQL 底层实现 xff0c 阅读原文 查看交流实录 文末高能 编辑 哈比 MySQL 的常用引擎 1 InnoDB InnoDB 的存储文件有两个 xff0c 后缀名分别是 f
  • 修改订单金额!?0.01 元购买 iPhoneX?| Web谈逻辑漏洞

    本文来自作者 肖志华 在 GitChat 上分享 Web 安全恩仇录 xff1a 再谈逻辑漏洞 xff0c 阅读原文 查看交流实录 文末高能 编辑 哈比 Web 漏洞里有 SQL 注入 XSS 等漏洞 xff0c 但是逻辑漏洞等问题也是一个
  • 如何开发一款游戏:游戏开发流程及所需工具

    本文来自作者 goto先生 在 GitChat 上分享 如何开发一款游戏 xff1a 游戏开发流程及所需工具 编辑 哈比 游戏作为娱乐生活的一个方面 xff0c 参与其中的人越来越多 xff0c 而大部分参与其中的人都是以玩家的身份 他们热
  • 如何用 Python 做自动化测试

    本文来自作者 Vant 在 GitChat 上分享 如何用 Python 做自动化测试 编辑 哈比 一 Selenium 环境部署 1 window 环境部署 1 1 当前环境 Win10 64 位系统 xff1b Python3 6 2
  • 我真的要做一辈子的程序员吗?

    本文来自作者 王鹏 在 GitChat 上分享 程序员跳槽时 xff0c 如何正确做好职业规划 xff1f 阅读原文 查看交流实录 编辑 贝吉塔 经常听一些同学说 xff1a 不知道下一份工作该去哪类公司做些什么 xff0c 我的职场人际一
  • 20万到100万年薪的算法工程师有什么区别?

    公元七世纪 xff0c 在车迟国国家气象局组织的一次求雨活动中 xff0c 虎力 鹿力 羊力三位大仙成功地祈下甘霖 xff0c 救黎民于水火中 老国王虽然不明就里 xff0c 却从此尊他们为国师 xff0c 奉道教为圭臬 本世纪 xff0c
  • 在win7下安装ubuntu

    安装VMware 从官网下载VMware workstation full 10 0 4 2249910 exe文件 xff0c 一直点击下一步 xff0c 直到安装成功 安装成功的界面如图所示 xff1a 安装Ubuntu 1 获取发行版
  • 带参数的宏定义 #define

    main c C语言学习 include lt stdio h gt 求和函数 int sum int v1 int v2 return v1 43 v2 宏定义 define 代表要定义一个宏 SUM 宏的名称 v1 v2 参数 xff0
  • 串口编程项目— PX4FLOW 传感器数据接收处理(英文paper直接贴过来)

    写在前面 xff1a 七月份初 xff0c 结束交流生项目 xff0c 向导师申请了个项目 xff0c 关于PX4FLOW传感器的 xff0c serial programming 的java编程 xff0c 下午刚刚提交完paper 写个
  • 电路城(www.cirmall.com)-基于HS1101LF和TC1047A 温湿度传感器模块(硬件+源码+设计说明等)

    电路城 xff08 www cirmall com xff09 本次分享的温湿度传感器模块采用瑞萨电子生产的 R7F0C802 单片机作为控制单元 xff0c 采集温度传感器 TC1047A 输出的电压信号和湿度传感器HS1101LF 电路
  • 服务器后端开发,学什么编程语言?

    服务器后端开发 xff0c 学什么编程语言 xff1f 技术 后台开发 xff0c 目前主流的编程语言是Java xff0c Go语言 xff0c C 43 43 xff0c python 以及php 个人建议学Java xff0c 主流中
  • ROS基础:功能包的创建与编译

    创建 如果你使用的是catkin编译系统 xff0c 那么可以很容易地创建一个功能包 首先进入你的工作空间的src目录下 xff1a cd catkin ws src 然后运行catkin create pkg命令 xff1a catkin
  • 关于TF转换信息(Transforms)的理解

    本文主要内容参考自ROS wiki tf Overview Transformations xff0c 在加入了自己的一些理解的同时 xff0c 我也对原文进行了适当的修改 原文使用Creative Commons Attribution
  • RealSense SDK 开发笔记(一)环境配置

    转载请注明出处 2017 以后的SDK结构必然趋于稳定 xff0c 也就会多一些新特性和新设备的支持 xff0c 配置流程不再变化 2016 2 xff1a 目前SDK版本是2016R1 xff0c 配置过程一模一样 xff0c SDK主要
  • 闭包方法的学习

    相关链接 swift中使用 64 noescape的正确姿势 文档闭包 闭包可以捕获和存储其在上下文中任意常量和变量的引用 被称为包裹常量和变量 Swift会为你管理在捕获过程中涉及到的所有内存操作 在函数章节中介绍的全局和嵌套函数也是特殊
  • CMakeLists常用方法

    我们在编译一个C C 43 43 项目时有时候是需要我们阅读编译脚本来确定编译时的参数 CMakeLists txt是比较常见的编译脚本 xff0c 这里简单介绍几个常用的函数 cmake minimum required 设置cmake的
  • halcon中Image的像素类型

    在学习halcon算子sub image ImageMinuend ImageSubtrahend ImageSub Mult Add 时 xff0c 在样例中遇到了一个操作 This example demonstrates how to
  • GitHub Action构建并推送DockerHub

    前言 偶尔会构建一些自己用的容器 xff0c 之前一直用的是Docker提供的构建服务 xff0c 然而Docker开始收费了 xff0c 那只能另寻他法 之所以不本地构建推送 xff0c 是因为构建的时候经常因为网络问题 xff0c 访问
  • BIO与NIO的方式实现文件拷贝

    面试题 编程实现文件拷贝 xff08 这个题目在笔试的时候经常出现 xff0c 下面的代码给出了两种实现方案 xff09 span class hljs keyword import span java io FileInputStream