1. 程式人生 > >在Java中讀寫UTF-8編碼檔案

在Java中讀寫UTF-8編碼檔案

 在C#中,採用System.IO.StreamReader和System.IO.StreamWriter直接讀寫UTF-8編碼的檔案,因為在這兩個類可以指定讀取或者寫入檔案的編碼格式,而其預設編碼則是UTF-8。

而在Java中,如果我們用java.io.FileReader或者java.io.FileWriter來讀寫檔案的話,固然我們可以通過 java.io.BufferedReader和java.io.BufferedWriter來提高效率,但是我們會發現在FileReader和 FileWriter中我們只能獲取編碼方式,而不能設定。這樣,在FileReader和FileWriter中的編碼設定只能服從於一些更為底層的設 置,那麼在讀寫多種語言編碼的檔案時就很容易出現亂碼。

另外一種方法就是採用java.io.FileInputStream/java.io.InputStreamReader和 java.io.FileOutputStream/java.io.OutputStreamWriter來解決這個問題。在 InputStreamReader和OutputStreamWriter中,可以通過指定編碼方式來完成UTF-8檔案的讀寫。

比如:
java.io.BufferedWriter writer = null;
java.io.FileOutputStream writerStream = new java.io.FileOutputStream(filename);   
writer = new java.io.BufferedWriter(new java.io.OutputStreamWriter(writerStream, "UTF-8")); 
// do something
// writing file
writer.close();