Можно ли читать из файла, используя только FileReader? - PullRequest
1 голос
/ 27 февраля 2012

Я знаю, что правильный подход

BufferedReader br = new BufferedReader(FileReader(file));

но я проверил в Java API методы класса FileReader, и у него есть read() метод, который возвращает прочитанный символ. Но это не работает для меня. Я читаю файл, содержащий эту строку текста: «Я читаю файл», и печатаю его на экране, но когда я запускаю программу, она печатает эквивалентный код ASCII для каждого символа.

Это мой код:

String lectura = "";
try{
    lectura = String.valueOf(fr.read());
} catch(IOException ioex){
    ioex.printStackTrace();
}

while((Integer.parseInt(lectura)) != -1){
    System.out.print(lectura);
    try{
        lectura = String.valueOf(fr.read());
    } catch(IOException ioex){
        ioex.printStackTrace();
    }
}

Ответы [ 3 ]

5 голосов
/ 27 февраля 2012

Что происходит, это -

fr.read () возвращает целое число, а не символ, хотя возвращаемое целое число является эквивалентным кодом ASCII для этого символа.

Когда вы вызываете String.valueOf () для этого целого числа, вызывается метод String.valueOf (int i) вместо метода String.valueOf (char c), который вы ожидаете получить, и поэтому он возвращает значение ASCII в виде строки, а не символьное значение в виде строки.

Вместо этого попробуйте

    lectura = String.valueOf( (char) (fr.read()) );
2 голосов
/ 27 февраля 2012

Это ожидаемое поведение, текст хранится в байтах, и каждый байт имеет значение ASCII символа.Вы можете собрать эти байты в байтовый массив, а затем использовать новую строку (массив);преобразовать их в строку.Или вы можете привести к символу для преобразования отдельных персонажей.

1 голос
/ 27 февраля 2012

FileReader's read возвращает int.Вам просто нужно привести это значение к char.

. Причина, по которой Reader read не просто возвращает char, заключается в том, что использование int позволяет использовать -1представлять конец файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...