背景:有很多的Java初學者對於檔案複製的操作總是搞不懂,下面我將用4中方式實現指定檔案的複製。
實現方式一:使用FileInputStream/FileOutputStream位元組流進行檔案的複製操作
1 private static void streamCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用位元組流進行檔案複製 3 FileInputStream fi = new FileInputStream(srcFile); 4 FileOutputStream fo = new FileOutputStream(desFile); 5 Integer by = 0; 6 //一次讀取一個位元組 7 while((by = fi.read()) != -1) { 8 fo.write(by); 9 } 10 fi.close(); 11 fo.close(); 12 }
實現方式二:使用BufferedInputStream/BufferedOutputStream高效位元組流進行復制檔案
1 private static void bufferedStreamCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用緩衝位元組流進行檔案複製 3 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); 4 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desFile)); 5 byte[] b = new byte[1024]; 6 Integer len = 0; 7 //一次讀取1024位元組的資料 8 while((len = bis.read(b)) != -1) { 9 bos.write(b, 0, len); 10 } 11 bis.close(); 12 bos.close(); 13 }
實現方式三:使用FileReader/FileWriter字元流進行檔案複製。(注意這種方式只能複製只包含字元的檔案,也就意味著你用記事本開啟該檔案你能夠讀懂)
1 private static void readerWriterCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用字元流進行檔案複製,注意:字元流只能複製只含有漢字的檔案 3 FileReader fr = new FileReader(srcFile); 4 FileWriter fw = new FileWriter(desFile); 5 6 Integer by = 0; 7 while((by = fr.read()) != -1) { 8 fw.write(by); 9 } 10 11 fr.close(); 12 fw.close(); 13 }
實現方式四:使用BufferedReader/BufferedWriter高效字元流進行檔案複製(注意這種方式只能複製只包含字元的檔案,也就意味著你用記事本開啟該檔案你能夠讀懂)
1 private static void bufferedReaderWriterCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用帶緩衝區的高效字元流進行檔案複製 3 BufferedReader br = new BufferedReader(new FileReader(srcFile)); 4 BufferedWriter bw = new BufferedWriter(new FileWriter(desFile)); 5 6 char[] c = new char[1024]; 7 Integer len = 0; 8 while((len = br.read(c)) != -1) { 9 bw.write(c, 0, len); 10 } 11 12 //方式二 13 /*String s = null; 14 while((s = br.readLine()) != null) { 15 bw.write(s); 16 bw.newLine(); 17 }*/ 18 19 br.close(); 20 bw.close(); 21 }
以上便是Java中分別使用位元組流、高效位元組流、字元流、高效字元流四種方式實現檔案複製的方法!