mrserfr
33 уровень

FileReader

Статья из группы Архив info.javarush
участников
Добрый день! Объясните, пожалуйста, метод действия FileReader'a. Он читает целиком строку, а потом переходит на следующую? Или по символам? В этом коде: BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedReader fileReader = new BufferedReader(new FileReader(reader.readLine())); ArrayList lines = new ArrayList(); String line; while((line = fileReader.readLine()) != null) { int i = Integer.parseInt(line); lines.add(i); } что именно делают строки: String line; while((line = fileReader.readLine()) != null){}
Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
mrserfr
Уровень 33
5 марта 2015, 23:38
Собственно, легче всего читать без разбору тупо по байтам — fileInputStream. Выводить соответственно — fileOutputStream


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String sourceFileName = reader.readLine();
        String destinationFileName = reader.readLine();

        java.io.FileInputStream fileInputStream = new java.io.FileInputStream(sourceFileName);
        java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream(destinationFileName);

        while (fileInputStream.available()>0)
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
        }
        fileInputStream.close();
        fileOutputStream.close();
    }
}
mrserfr
Уровень 33
21 июля 2014, 22:46
Еще вопрос возник!!!

Как заставить читать кодировку ютф8, тобишь, кириллицу?

Код:
<code>
public class FileReaderTest
{
    public static void main(String[] args) throws IOException{
        BufferedReader reader = new BufferedReader(new FileReader("D:\\java\\123.txt"));
        while(reader.ready()){
            String readLine = reader.readLine();
            System.out.println(readLine);
        }
    }
}</code>
Читает файл:
<code>
5677аоцажцуаоцтж
8аьцудщацрьужац
11азцубщао238472ь923гьо
3лаьощ38
2
10
</code>

И выдает:

<code>
5677������������
8��������������
11��������238472�923���
3�����38
2
10

</code>

Как заставить прочитать нормально? Ну не могу в инете найти, хоть убейте. Все всегда нахожу, а тут ступор… И в документации ничего не вижу.
mrserfr
Уровень 33
21 июля 2014, 22:51
Я нашел
<code>
InputStreamReader inChars = new InputStreamReader(fileIn,"UTF-8");
</code>
, но это нифига не помогает, потому что тогда читает по символу. И потом получаю коды символов в интежере, без понятия, как оттуда вынуть буквы
Docktor91
Уровень 40
21 июля 2014, 21:50
хм…
String line; //переменная для считываемой строки(одной строки)
while((line = fileReader.readLine()) != null)// тут цикл пока может что то считать(not null), попутно присваивая line= fileReader.readLine()
mrserfr
Уровень 33
21 июля 2014, 22:04
остается вопрос: «считывает fileReader по одному символу? или до конца строки»
потому что если в строке бесперерывное число, например 7 или 7921837912837, он ее читает полностью, а если, например, строка такая: «7 7 7», он считает только первую 7 и все. на остальное тупо забьет. вопрос, как сделать, чтобы считал все? может, вопрос нубский, ну я всего 10 дней тут тусую)) объясни, пожалуйста

ps: первоначальное условие, в строках только целые числа
Sant9Iga
Уровень 41
21 июля 2014, 22:06
у файлридера куча методов для чтения.
readLine — вот это считывает полностью всю строку.
mrserfr
Уровень 33
21 июля 2014, 22:08
спасибо