2011-10-29 82 views
5

Trong Java, có cách đọc tệp (tệp văn bản) theo cách nó sẽ chỉ đọc một ký tự cùng một lúc, thay vì String theo Chuỗi. Điều này là dành cho mục đích của một phân tích từ vựng cực kỳ cơ bản, vì vậy bạn có thể hiểu tại sao tôi muốn một phương pháp như vậy. Cảm ơn bạn.Đọc từ ký tự tệp văn bản theo ký tự

+0

Thực ra, tôi không hiểu; cách bạn xử lý đầu vào không giống như cách bạn đọc nó. IMO bạn nên sử dụng một trình đọc được đệm và xử lý ký tự đầu vào theo ký tự, không đọc nó một cách rõ ràng theo cách đó. –

Trả lời

3

Bạn có thể đọc toàn bộ tập tin (nếu nó không phải là nhiều lớn) trong bộ nhớ như chuỗi, và lặp trên chuỗi ký tự bằng vật

+2

Cũng không phải là câu trả lời. – FailedDev

+1

Đây là câu trả lời, bạn có nghĩ rằng nó nên chứa mã để trả lời! –

5

Dưới đây là một số mẫu mã để đọc/ghi một ký tự tại một thời điểm

public class CopyCharacters { 
    public static void main(String[] args) throws IOException { 

     FileReader inputStream = null; 
     FileWriter outputStream = null; 

     try { 
      inputStream = new FileReader("xanadu.txt"); 
      outputStream = new FileWriter("characteroutput.txt"); 

      int c; 
      while ((c = inputStream.read()) != -1) { 
       outputStream.write(c); 
      } 
     } finally { 
      if (inputStream != null) { 
       inputStream.close(); 
      } 
      if (outputStream != null) { 
       outputStream.close(); 
      } 
     } 
    } 
} 

Lưu ý, câu trả lời này đã được cập nhật để sao chép mã mẫu từ liên kết Ref, nhưng tôi thấy đây cơ bản là cùng một câu trả lời được đưa ra dưới đây.

ref: http://download.oracle.com/javase/tutorial/essential/io/charstreams.html

+1

Không phải là câu trả lời thay vì nhận xét. – FailedDev

+0

Bạn đã xem liên kết chưa? Nó cho thấy cách đọc một ký tự tệp văn bản theo ký tự. –

+0

Đặt nó vào một bình luận? – FailedDev

1

Bạn có thể sử dụng phương pháp đọc từ lớp InputStreamReader mà đọc một ký tự từ con suối và trả về -1 khi nó đạt đến sự kết thúc của dòng

public static void processFile(File file) throws IOException { 
     try (InputStream in = new FileInputStream(file); 
      Reader reader = new InputStreamReader(in)) { 

      int c; 
      while ((c = reader.read()) != -1) { 
       processChar((char) c); // this method will do whatever you want 
      } 
     } 
    } 
0

Có một số giải pháp có thể. Nói chung, bạn có thể sử dụng bất kỳ Reader nào từ gói java.io để đọc các ký tự, ví dụ:

// Read from file 
BufferedReader reader = new BufferedReader(new FileReader("file.txt")); 
// Read from sting 
BufferedReader reader = new BufferedReader(new StringReader("Some text")); 
Các vấn đề liên quan