步驟:java
(1) 要複製文件,首先得先要有文件;面試
(2) 而後把文件裏面的內容讀取到輸入流中;數組
(3) 再把輸入流中的內容寫到輸出流中;eclipse
(4) 再從輸出流中寫入到目的文件中;spa
(5) 最後牢記要關閉流通道。code
① 當文件得大小超過 int 時,應該分開一部分一部分的傳,同時傳時會溢出,用byte數組當作緩衝區。注意關閉流的順序。blog
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 stub 15 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 block 31 e.printStackTrace(); 32 } catch (IOException e) { 33 // TODO Auto-generated catch block 34 e.printStackTrace(); 35 } 36 System.out.println("複製完成"); 37 } 38 }
②當文件大小沒有超過 int 時,能夠把文件的大小設置爲數組的大小。注意關閉流的順序。ip
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 stub 15 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 block 30 e.printStackTrace(); 31 } catch (IOException e) { 32 // TODO Auto-generated catch block 33 e.printStackTrace(); 34 } 35 } 36 }
如有錯誤之處,歡迎指正。謝謝!get