使用FileChannel完成文件的复制
1 import java.io.FileInputStream; 2 3 import java.io.FileNotFoundException; 4 5 import java.io.FileOutputStream; 6 7 import java.io.IOException; 8 9 import java.nio.ByteBuffer; 10 11 import java.nio.channels.FileChannel; 12 13 14 15 public class Channel完成文件复制 { 16 17 main() { 18 19 20 21 // 输入流 22 FileInputStream fileInputStream = new FileInputStream("C:\\Users\\sunzh\\Desktop\\wxy.png"); 23 // 输出流 24 FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\sunzh\\Desktop\\lagou_myself\\nio\\复制.png"); 25 26 // 使用流获取通道 27 FileChannel f1 = fis.getChannel(); 28 FileChannel f2 = fos.getChannel(); 29 30 31 // 创建缓冲数组 32 ByteBuffer buffer = ByteBuffer.allocate(1024); 33 34 // 循环 35 while(f1.read(buffer) != -1) { 36 37 // 切换 38 buffer.flip(); 39 // 输出 40 41 f2.write(buffer); 42 43 // 还原所有指针位置 44 45 buffer.clear(); 46 47 } 48 // 关流 49 50 fos.close(); 51 fis.close(); 52 } 53 54 }