一. 前言
我们可以利用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(); } }
请登录之后再进行评论