2013-09-01 15 views
21

Bitte haben Sie einen Blick auf den folgenden CodeLesen und Schreiben von Text in ANSI-Format

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/** 
* 
* @author 
*/ 
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); 
    } 
} 

ich eine CSV-Datei zu lesen, ich versuche, den Text in Code bearbeiten, und schreiben Sie es zurück in eine .txt-Datei. Mein Problem ist, ich habe portugiesische Wörter, so sollte die Datei gelesen und geschrieben werden mit ANSI Format. Im Moment werden einige portugiesische Wörter durch Symbole in der Ausgabedatei ersetzt.

Wie kann ich Textdaten in einer Datei im ANSI-Format in Java lesen und schreiben?

+1

Liste farmacias = Files.readAllLines (Pfads.get ("c: \ tmp \ Farmacias.txt"), Charset.forName ("Cp1252")); –

+0

Ich stimme nicht zu> Die richtige Java-Codierung für Windows ANSI ist Cp1252 ANSI ist Microsofts Trick, und kann in verschiedene Kodierung eingestellt werden. Es könnte auch GBK, Shift_JIS usw. sein, abhängig von der Einstellung von Windows. – TKJohn

Antwort

41

Um eine Textdatei mit einer bestimmten Kodierung zu lesen, können Sie eine FileInputStream in Verbindung mit einer InputStreamReader verwenden. Die richtige Java-Codierung für Windows ANSI ist Cp1252.

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

Um eine Textdatei mit einem bestimmten Zeichen schreiben kodieren Sie eine FileOutputStream zusammen mit einem OutputStreamWriter verwenden können.

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

Die Klassen InputStreamReader und OutputStreamWriter zwischen byteorientiert Strömen und Text mit einem bestimmten Zeichensatz übersetzen.

+1

Warum ist Cp1252 nicht aufgeführt (http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html)? –

+3

Vielleicht ist diese Liste informativer: http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html – vanje