NIO 简单的读文件写文件实例

论坛 期权论坛 脚本     
匿名技术用户   2021-1-4 03:03   268   0
public static void copyFile() throws Exception {
  String infile = "C:\\src.txt";
  String outfile = "C:\\copy0.txt";

  // 获取源文件和目标文件的输入输出流
  FileInputStream fin = new FileInputStream(infile);
  FileOutputStream fout = new FileOutputStream(outfile);

  // 获取输入输出通道
  FileChannel fcin = fin.getChannel();
  FileChannel fcout = fout.getChannel();

  // 创建缓冲区
  ByteBuffer buffer = ByteBuffer.allocate(1024);

  long startTime = System.currentTimeMillis();
  //测重复写入很多数据
  for (int i = 0; i < 2000; i++) {
   while (true) {
    // clear方法重设缓冲区,使它可以接受读入的数据
    buffer.clear();

    // 从输入通道中将数据读到缓冲区 读一次后输入通道position至数据尾
    int r = fcin.read(buffer);

    // read方法返回读取的字节数,可能为零,如果该通道已到达流的末尾,则返回-1
    if (r == -1) {
     fcin.position(0);//复位
     break;
    }

    // flip方法让缓冲区可以将新读入的数据写入另一个通道
    buffer.flip();

    // 从缓冲区将数据写入输出通道中
    fcout.write(buffer);
   }
  }
  System.out.println("NIO waste time:"+(System.currentTimeMillis()-startTime));
  
  fin.close();
  fout.close();
 }

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP