最近在做HTML靜態(tài)生成,需要從硬盤上把模版文件的內容讀出來。然后,替換相關標簽寫到指定的文件中。無論是讀寫,都遇到了中文亂碼問題。試過多種方法,發(fā)現下面一種可以避免中文亂碼。(無論讀取還是寫入一定要進行編碼轉換。)
1、JAVA讀取文件,避免中文亂碼。
/**
* 讀取文件內容
*
* @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("讀取文件內容操作出錯");
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("寫文件內容操作出錯");
e.printStackTrace();
}
}