最近在做HTML靜態(tài)生成,需要從硬盤上把模版文件的內(nèi)容讀出來。然后,替換相關(guān)標(biāo)簽寫到指定的文件中。無論是讀寫,都遇到了中文亂碼問題。試過多種方法,發(fā)現(xiàn)下面一種可以避免中文亂碼。(無論讀取還是寫入一定要進(jìn)行編碼轉(zhuǎn)換。)
1、JAVA讀取文件,避免中文亂碼。 /** * 讀取文件內(nèi)容 * * @param filePathAndName * String 如 c:\\1.txt 絕對路徑 * @return boolean */ public static String readFile(String filePathAndName) { String fileContent = ""; try { File f = new File(filePathAndName); if(f.isFile()&&f.exists()){ InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8"); BufferedReader reader=new BufferedReader(read); String line; while ((line = reader.readLine()) != null) { fileContent += line; } read.close(); } } catch (Exception e) { System.out.println("讀取文件內(nèi)容操作出錯(cuò)"); e.printStackTrace(); } return fileContent; } 2、JAVA寫入文件,避免中文亂碼。 public static void writeFile(String filePathAndName, String fileContent) { try { File f = new File(filePathAndName); if (!f.exists()) { f.createNewFile(); } OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8"); BufferedWriter writer=new BufferedWriter(write); //PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName))); //PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName)); writer.write(fileContent); writer.close(); } catch (Exception e) { System.out.println("寫文件內(nèi)容操作出錯(cuò)"); e.printStackTrace(); } } |
|