步骤:
(1) 要复制文件,首先得先要有文件;
(2) 然后把文件里面的内容读取到输入流中;
(3) 再把输入流中的内容写到输出流中;
(4) 再从输出流中写入到目的文件中;
(5) 最后牢记要关闭流通道。
① 当文件得大小超过 int 时,应该分开一部分一部分的传,同时传时会溢出,用byte数组当做缓冲区。注意关闭流的顺序。
1 package copy; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream;10 11 public class Test1 {12 13 public static void main(String[] args) {14 // TODO Auto-generated method stub15 File from = new File("D:/安装包/java/eclipse-jee-oxygen-2-win32-x86_64.zip");16 File to = new File("D:/"+from.getName());17 try {18 InputStream is = new FileInputStream(from);19 OutputStream os = new FileOutputStream(to,true);20 byte[] b = new byte[1024];21 int i =is.read(b);22 while(i!=-1) {23 os.write(b, 0, i);24 i=is.read(b);25 System.out.println(i);26 }27 os.close();//先关闭输出流28 is.close();//再关闭输入流29 } catch (FileNotFoundException e) {30 // TODO Auto-generated catch block31 e.printStackTrace();32 } catch (IOException e) {33 // TODO Auto-generated catch block34 e.printStackTrace();35 }36 System.out.println("复制完成");37 }38 }
②当文件大小没有超过 int 时,可以把文件的大小设置为数组的大小。注意关闭流的顺序。
1 package copy; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream;10 11 public class Test0 {12 13 public static void main(String[] args) {14 // TODO Auto-generated method stub15 File from = new File("D:/东软实训/面试题目/Java面试宝典.doc");16 File to = new File("D:/"+from.getName());17 try {18 /*读源文件*/19 InputStream is = new FileInputStream(from);20 byte[] b = new byte[(int) from.length()];21 is.read(b);22 is.close();//读完后,输入流此时就可以关闭了23 /*写到目标文件*/24 OutputStream os = new FileOutputStream(to);25 os.write(b);26 os.close();//关闭输出流27 System.out.println("复制完成");28 } catch (FileNotFoundException e) {29 // TODO Auto-generated catch block30 e.printStackTrace();31 } catch (IOException e) {32 // TODO Auto-generated catch block33 e.printStackTrace();34 }35 }36 }
若有错误之处,欢迎指正。谢谢!