java指定編碼的按行讀寫txt文件(幾種讀寫方式的比較)


 

轉:

java指定編碼的按行讀寫txt文件(幾種讀寫方式的比較)

 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Handoking/article/details/83095380

輸入輸出的幾種形式

1.FileReader,FileWriter

  File r = new File("temp.txt")
    FileReader f = new FileReader(name);//讀取文件name
    BufferedReader b = new BufferedReader(f);//緩沖寫入,提供了readline函數,可以按行讀取。
    Srting str = null;
    while((str = b.readline()) != null){
            System.out.print(str);//按行讀取 
    }
    //但FileReader涉及編碼轉換問題,默認系統編碼,容易出現亂碼

 

   FileWriter writer = new FileWriter("c://test.txt");//FileWriter不會覆蓋原來的文本,並且能識別換行符。
     BufferedWriter bw = new BufferedWriter(writer);//緩沖寫入,提高寫入速度
     bw.write("已存在的字符串");

2.inputStreamReader,outputStreamWriter

    File f = new File("//..//");
    InputStreamReader reader = new InputStreamReader(new FileInputStream(f));
    BuffeReader br = new BufferedWriter(reader);
    //FileReader是把文件轉換為字符流讀入
    //FileInputStream是讀取字節流
    //InputStreamReader將字節轉換為字符,同時InputStreamReader的參數中可以自定義編碼,這是個重要的特性。
    //OutputStreamWriter的用法同InputStreamReader,同樣可以用戶在其參數中自定義編碼方式,比較適合對中文文檔的寫。

 


3.按行讀寫並指定編碼方式

//按行讀中文文檔,為了之后能按行寫,先將讀到的中文字符串,放入數組
    List<String>temp = new ArrayList<>();
    File f = new File("c://data.txt");
    InputStreamReader reader = new InputStreamReader(new FileInputStream(f),"GBK");
    BufferedReader br = new BufferedReader(reader);
    String str=null;
    while((str=br.readline())!=null){
            temp.append(str);
    }
    br.close();
    reader.close();
    //下面按行讀。我實現的其實就是變相的分行打印,如果有更好的方法請大家指教
    OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("out.txt"),"GBK");
    BufferedWriter bw = new BufferedWriter(os);
    PrintWriter out = new PrintWriter(bw);
    for(String aTemp:temp){
            out.println(aTemp);
    }
    bw.close();
    os.close();
    out.close();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM