请看下面的代码
import java.io.*; public class CSVConverter { private File csvFile; private BufferedReader reader; private StringBuffer strBuffer; private BufferedWriter writer; int startNumber = 0; private String strString[]; public CSVConverter(String location, int startNumber) { csvFile = new File(location); strBuffer = new StringBuffer(""); this.startNumber = startNumber; //Read try { reader = new BufferedReader(new FileReader(csvFile)); String line = ""; while((line=reader.readLine())!=null) { String[] array = line.split(","); String inputQuery = "insertQuery["+startNumber+"] = \"insert into WordList_Table ('Engl','Port','EnglishH','PortugueseH','Numbe','NumberOf','NumberOfTime','NumberOfTimesPor')values('"+array[0]+"','"+array[2]+"','"+array[1]+"','"+array[3]+"',0,0,0,0)\""; strBuffer.append(inputQuery+";"+"\r\n"); startNumber++; } } catch(Exception e) { e.printStackTrace(); } System.out.println(strBuffer.toString()); //Write try { File file = new File("C:/Users/list.txt"); FileWriter filewrite = new FileWriter(file); if(!file.exists()) { file.createNewFile(); } writer = new BufferedWriter(filewrite); writer.write(strBuffer.toString()); writer.flush(); writer.close(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[]args) { new CSVConverter("C:/Users/list.csv",90); } }
我正在尝试读取CSV文件,在代码中编辑文本,然后将其写回到.txt文件中。我的问题是,我有葡萄牙语单词,因此应使用ANSI格式读写文件。现在,输出文件中的某些葡萄牙语单词已替换为符号。
如何在Java中以ANSI格式读取文本数据并将其写入文件?
要读取具有特定编码的文本文件,可以将FileInputStream结合使用InputStreamReader。Windows ANSI的正确Java编码是Cp1252。
reader = new BufferedReader(new InputStreamReader(new FileInputStream(csvFile), "Cp1252"));
要编写具有特定字符编码的文本文件,可以将和FileOutputStream一起使用OutputStreamWriter。
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "Cp1252"));
这些类InputStreamReader和OutputStreamWriter字节之间在面向字节的流和具有特定字符编码的文本之间转换。