2013-09-01 48 views
21

hãy có một cái nhìn tại các mã sauĐọc và Viết văn bản trong định dạng ANSI

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

Tôi cố gắng để đọc một tập tin csv, chỉnh sửa văn bản trong mã, và viết nó trở lại vào một tập tin .txt. Vấn đề của tôi là, tôi có từ tiếng Bồ Đào Nha, do đó, các tập tin nên được đọc và viết bằng cách sử dụng định dạng ANSI. Ngay bây giờ một số từ tiếng Bồ Đào Nha được thay thế bằng các biểu tượng trong tập tin đầu ra.

Làm cách nào để đọc và ghi dữ liệu văn bản vào một tệp ở định dạng ANSI trong Java?

+1

Danh sách farmacias = Files.readAllLines (Paths.get ("c: \\ tmp \\ Farmacias.txt"), Charset.forName ("Cp1252")); –

+0

Tôi không đồng ý về> Mã hóa Java phù hợp cho Windows ANSI là Cp1252 ANSI là thủ thuật của Microsoft và có thể được đặt thành mã hóa khác nhau. Nó cũng có thể là GBK, Shift_JIS, v.v., tùy thuộc vào cài đặt của Windows. – TKJohn

Trả lời

41

Để đọc tệp văn bản có mã hóa cụ thể, bạn có thể sử dụng FileInputStream kết hợp với InputStreamReader. Mã hóa Java phù hợp cho Windows ANSI là Cp1252.

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

Để viết một tập tin văn bản với một nhân vật cụ thể mã hóa, bạn có thể sử dụng một FileOutputStream cùng với một OutputStreamWriter.

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

Các lớp InputStreamReaderOutputStreamWriter dịch giữa định hướng byte suối và văn bản với một mã hóa ký tự cụ thể.

+1

Tại sao Cp1252 không được liệt kê [ở đây] (http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html)? –

+3

Có thể danh sách này có nhiều thông tin hơn: http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html – vanje

Các vấn đề liên quan