txt texto sobreescribir modificar guardar datos crear como charset archivos archivo java io bufferedreader ansi bufferedwriter

texto - modificar archivos txt en java



Leer y escribir texto en formato ANSI (1)

Por favor, eche un vistazo al siguiente código

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); } }

Estoy intentando leer un archivo CSV, editar el texto en código y volver a escribirlo en un archivo .txt . Mi problema es que tengo palabras en portugués, por lo que el archivo debe leerse y escribirse en formato ANSI . En este momento, algunas palabras en portugués se reemplazan con símbolos en el archivo de salida.

¿Cómo puedo leer y escribir datos de texto en un archivo en formato ANSI en Java?


Para leer un archivo de texto con una codificación específica, puede usar FileInputStream junto con un InputStreamReader . La codificación Java correcta para Windows ANSI es Cp1252 .

reader = new BufferedReader(new InputStreamReader(new FileInputStream(csvFile), "Cp1252"));

Para escribir un archivo de texto con una codificación de caracteres específica, puede usar un FileOutputStream junto con un OutputStreamWriter .

writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "Cp1252"));

Las clases InputStreamReader y OutputStreamWriter traducen entre flujos orientados a bytes y texto con una codificación de caracteres específica.