轉:
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 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();