Java實現檔案複製的四種方式

阿豪聊乾貨發表於2016-05-02

背景:有很多的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中分別使用位元組流、高效位元組流、字元流、高效字元流四種方式實現檔案複製的方法!

相關文章