Java文件讀寫詳解。 附txt亂碼問題, html亂碼問題


先看代碼

 1 public class FileReader {
 2     public static String readFile(String fileName) {
 3         String fileContent = "";
 4         try {
 5             File f = new File(fileName);
 6             if (f.isFile() && f.exists()) {
 7                 InputStreamReader read = new InputStreamReader(
 8                         new FileInputStream(f), "gbk");
 9                 BufferedReader reader = new BufferedReader(read);
10                 String line;
11                 while ((line = reader.readLine()) != null) {
12                     fileContent += line;
13                 }
14                 read.close();
15             }
16         } catch (Exception e) {
17             e.printStackTrace();
18         }
19         return fileContent;
20     }
21 }

這里有幾個比較重要的對象

File    定義文件路徑

InputStreamReader    File與BufferReader的橋梁

BufferReader             內存數據與InputStreamReader的橋梁

 

簡單來說就是File先給出了文件路徑

之后通過InputStreamReader將文件讀取到內存塊中,但是此時離真正可用的內存數據還有一步,需要借用BufferReader的readline方法

於是將InputStreamReader與BufferReader綁定,則可以新的BufferReader對象將數據寫入到內存中

 

 

 

同理於寫文件

 1 public class FileWriter {
 2     public static void writeFile(String fileName, String fileContent) {
 3         try {
 4             File f = new File(fileName);
 5             if (!f.exists()) {
 6                 f.createNewFile();
 7             }
 8             OutputStreamWriter write = new OutputStreamWriter(
 9                     new FileOutputStream(f), "gbk");
10             BufferedWriter writer = new BufferedWriter(write);
11             writer.write(fileContent);
12             writer.close();
13         } catch (Exception e) {
14             e.printStackTrace();
15         }
16 
17     }
18 }

 

 

此外有時我們會遇到讀取的文件是亂碼的情況

這是因為所選擇的編碼方式於文件的編碼格式不符合,如此只要修改InputStreamReader中的編碼參數就可以了

當我們寫一個html文件時,有時也會出現亂碼的問題

雖然我們寫入時並非亂碼,但用html打開時就是亂碼,這個問題的原因是html通常用utf-8來打開,如果用gbk或其他格式保存,則以html格式打開時會顯示亂碼

 

以上


免責聲明!

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



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