Чтение из текстового файла посимвольно - PullRequest
8 голосов
/ 30 октября 2011

В Java есть способ чтения файла (текстового файла) таким образом, что он будет читать только один символ за раз, а не String by String. Это сделано для очень простого лексического анализатора, чтобы вы могли понять, почему я хотел бы использовать такой метод. Спасибо.

Ответы [ 4 ]

6 голосов
/ 30 октября 2011

Вот пример кода для чтения / записи по одному символу за раз

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

Обратите внимание, этот ответ был обновлен, чтобы скопировать пример кода из ссылки Ref, но я вижу, что по сути это тот же ответ, который приведен ниже.

исх: http://download.oracle.com/javase/tutorial/essential/io/charstreams.html

3 голосов
/ 06 октября 2013

Вы можете использовать метод read из класса InputStreamReader, который читает один символ из потока и возвращает -1, когда достигает конца потока

   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
             }
        }
    }
3 голосов
/ 30 октября 2011

Вы можете прочитать весь файл (если он не очень большой) в памяти как строку и перебрать строку символа за символом

0 голосов
/ 03 декабря 2015

Есть несколько возможных решений.Обычно для чтения символов можно использовать любой пакет Reader из java.io, например:

// Read from file
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
// Read from sting
BufferedReader reader = new BufferedReader(new StringReader("Some text"));
...