先看代碼
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格式打開時會顯示亂碼
以上