java中複製文字檔的方式我總結為14種(按字元讀取4中,按位元組讀取8種!??)

來源:互聯網
上載者:User

標籤:

java中複製檔案的方式

如果按照字元來讀取的話,可以有4種,基本的2種,高效的2種,高效特殊的1種

第0種:

public class CopyFileDemo {public static void main(String[] args) throws Exception{//封裝資料來源BufferedReader reader = new BufferedReader(new FileReader("a.txt"));//封裝目的地BufferedWriter writer = new BufferedWriter(new FileWriter("b.txt"));//讀寫資料String line = null;while((line=reader.readLine())!=null){writer.write(line);writer.newLine();//添加新行,不然寫到檔案裡面的內容就沒有換行writer.flush();}//釋放資源writer.close();writer.close();}}


第一種:加入緩衝區Buffered一次讀取一個字元數組

public class CopyFileTest {public static void main(String[] args) throws Exception{//封裝資料來源BufferedReader reader = new BufferedReader(new FileReader("a.txt"));//封裝目的地BufferedWriter writer = new BufferedWriter(new FileWriter("b.txt"));//兩種方式其中一種一次讀取一個字元數組char[] chs = new char[1024];int len=0;while((len=reader.read(chs))!=-1){writer.write(chs,0,len);writer.flush();//記得重新整理}//釋放資源writer.close();reader.close();}}

第二種:加入緩衝區Buffered一次讀取一個字元

public class CopyFileTest {public static void main(String[] args) throws Exception{//封裝資料來源BufferedReader reader = new BufferedReader(new FileReader("a.txt"));//封裝目的地BufferedWriter writer = new BufferedWriter(new FileWriter("b.txt"));//一次讀取一個字元int ch=0;while((ch=reader.read())!=-1){writer.write(ch);}//釋放資源writer.close();reader.close();}}

第三種:普通的一次讀取一個字元數組

public class BufferedCopyFileTest {public static void main(String[] args) throws Exception{//封裝資料來源FileReader reader = new FileReader("a.txt");//封裝目的地FileWriter writer = new FileWriter("b.txt");//一次讀取一個字元數組char[] chs = new char[1024];int len=0;while((len=reader.read(chs))!=-1){writer.write(chs,0,len);writer.flush();}writer.close();reader.close();}}

第三種:普通的一次讀取一個字元

public class BufferedCopyFileTest {public static void main(String[] args) throws Exception{//封裝資料來源FileReader reader = new FileReader("a.txt");//封裝目的地FileWriter writer = new FileWriter("b.txt");//一次讀取一個字元int ch=0;while((ch=reader.read())!=-1){writer.write(ch);}writer.close();reader.close();}}

如果按照位元組來讀取的話,可以有8中

第一種:把位元組流轉換為字元流來一次讀取一個字元

public class Copy {public static void main(String[] args) throws Exception {//封裝資料來源(把位元組流轉換為字元流)InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));//封裝目的地(把位元組流轉換為字元流)OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"));//一次讀取一個字元int ch=0;while((ch=isr.read())!=-1){osw.write(ch);}//關閉資源osw.close();isr.close();}}

第二種:把位元組流轉換為字元流來一次讀取一個字元數組

public class Copy {public static void main(String[] args) throws Exception {//封裝資料來源(把位元組流轉換為字元流)InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));//封裝目的地(把位元組流轉換為字元流)OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"));//一次讀取一個字元數組char[] chs = new char[1024];int len=0;while((len=isr.read(chs))!=-1){osw.write(chs,0,len);osw.flush();}//關閉資源osw.close();isr.close();}}
  第三種:高效位元組流一次讀寫一個位元組數組:

 public static void method4(String srcString, String destString)                  throws IOException {              BufferedInputStream bis = new BufferedInputStream(new FileInputStream(                      srcString));              BufferedOutputStream bos = new BufferedOutputStream(                      new FileOutputStream(destString));                    byte[] bys = new byte[1024];              int len = 0;              while ((len = bis.read(bys)) != -1) {                  bos.write(bys, 0, len);              }                    bos.close();              bis.close();          }  

第四種:高效位元組流一次讀取一個字元:

 public static void method3(String srcString, String destString)                  throws IOException {              BufferedInputStream bis = new BufferedInputStream(new FileInputStream(                      srcString));              BufferedOutputStream bos = new BufferedOutputStream(                      new FileOutputStream(destString));                    int by = 0;              while ((by = bis.read()) != -1) {                  bos.write(by);                    }                    bos.close();              bis.close();          }  

第五種:普通的位元組流對象一次讀取一個位元組數組

public static void method2(String srcString, String destString)                  throws IOException {              FileInputStream fis = new FileInputStream(srcString);              FileOutputStream fos = new FileOutputStream(destString);                    byte[] bys = new byte[1024];              int len = 0;              while ((len = fis.read(bys)) != -1) {                  fos.write(bys, 0, len);              }                    fos.close();              fis.close();          }        

第六種:普通的位元組流對象一次讀取一個位元組

public static void method1(String srcString, String destString)                  throws IOException {              FileInputStream fis = new FileInputStream(srcString);              FileOutputStream fos = new FileOutputStream(destString);                    int by = 0;              while ((by = fis.read()) != -1) {                  fos.write(by);              }                    fos.close();              fis.close();          }  
第七種:BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b,txt")));然後一次讀取一個字元

第八種:BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b,txt")));然後一次讀取一個字元數組


注意複製圖片、視頻、音訊話,只有4種方式(位元組流讀取方式),不能用字元流讀取

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

java中複製文字檔的方式我總結為14種(按字元讀取4中,按位元組讀取8種!??)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.