• 中文
    • English
  • 注册
  • 赞助本站

    • 支付宝
    • 微信
    • QQ

    感谢一直支持本站的所有人!

    • 查看作者
    • Java-IO:使用字节流复制图片

      一.  前言

      我们可以利用IO操作,复制我们电脑中的任意文件,下面我们以复制一张图片为例:

      二.  使用字节流复制图片

      因为windows系统下的目录分隔符是右斜杠\,但是Linux是左斜杠/,所以为了使我们的代码兼容这两个系统,在有目录的相关操作中,我们一般不会使用\或者/,而是使用:File.separator来代替

      package io.zhangjia.io;
      
      
      import java.io.*;
      
      public class CopyImg {
          public static void main(String[] args) throws IOException {
      
              File inFile = new File("E:" + File.separator + "zhangjia" + File.separator + "1.png");
              File outFile = new File("E:" + File.separator + "zhangjia" + File.separator + "2.png");
              File parentFile = outFile.getParentFile();
              if (!parentFile.exists()) {
                  System.out.println("创建目录:" + parentFile.mkdirs());
              }
              FileInputStream is = new FileInputStream(inFile);
              FileOutputStream os = new FileOutputStream(outFile);
              // 开始读
              System.out.println("开始复制。。。");
              long start = System.currentTimeMillis();
              int len = 0;
              byte[] b = new byte[1024];
              while ((len = is.read(b)) != -1) {
                  os.write(b, 0, len);
              }
              long end = System.currentTimeMillis();
              System.out.println("复制成功,耗时:" + (end - start) + "毫秒");
              is.close();
              os.close();
      
          }
      }

      三.  使用CommonsIo复制图片

      除了使用上面的方法外,我们还可以使用Apache家的CommonsIo来直接复制图片:

      package io.zhangjia.io;
      
      
      
      import org.apache.commons.io.IOUtils;
      
      import java.io.File;
      import java.io.FileInputStream;
      import java.io.FileOutputStream;
      import java.io.IOException;
      
      public class CopyImgByCommonsIo {
          public static void main(String[] args) throws IOException {
      
              File inFile = new File("E:" + File.separator + "zhangjia" + File.separator + "1.jpg");
              File outFile = new File("E:" + File.separator + "zhangjia" + File.separator + "2.jpg");
              File parentFile = outFile.getParentFile();
              if (!parentFile.exists()) {
                  System.out.println("创建目录:" + parentFile.mkdirs());
              }
              FileInputStream is = new FileInputStream(inFile);
              FileOutputStream os = new FileOutputStream(outFile);
              // 开始读
              System.out.println("开始复制。。。");
              long start = System.currentTimeMillis();
            /*  int len = 0;
              byte[] b = new byte[20000];
              while ((len = is.read(b)) != -1) {
                  os.write(b, 0, len);
              }
              上面的五行可以直接用下面的一行来代替
              */
              
              IOUtils.copy(is,os);
              long end = System.currentTimeMillis();
              System.out.println("复制成功,耗时:" + (end - start) + "毫秒");
              is.close();
              os.close();
      
          }
      }

      山东省·济宁市
    • 1
    • 0
    • 0
    • 446
    • pearPLUS

      请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 返回顶部
    • 单栏布局 侧栏位置: