zoukankan      html  css  js  c++  java
  • BIO与NIO的方式实现文件拷贝

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

    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();
             }
          }
    
    }

    作者: haifeiWu

    出处: http://www.hchstudio.cn/

    关于作者:专注大后端,分布式,高并发等领域,请多多赐教!

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接

  • 相关阅读:
    第四周总结&实验报告二
    实验报告 一
    周总结
    期末总结
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    第五周课程总结&试验报告(三)
  • 原文地址:https://www.cnblogs.com/haifeiWu/p/9079598.html
Copyright © 2011-2022 走看看