Member 13819453 Ответов: 1

Не удается сохранить строку после чтения ее из файла.


Я использую приведенный выше код для печати строк файла. Проблема в том, что линия появляется только на миллисекунду. Мой файл содержит только одну строку длиной 70 000, и я хочу разделить ее на некоторую подстроку, а затем записать ее в другой файл с несколькими строками в качестве вывода. Я также попытался сохранить строку чтения в список массивов внутри цикла while.
ArrayList  ArrayList lis = new ArrayList()
lis.add(l)
Также,
lis.size()
Это показывает, что строка успешно скопирована в список массивов.
lis.get(0).length()
Он показывает длину строки внутри списка. Но кое-как я не могу прочитать строку ни в приведенном ниже коде, ни в SysOut.
System.out.println(lis.get(0))
Я не знаю, что делаю не так. Кроме того, я попробовал приведенный выше код с каким-то другим текстовым файлом с несколькими строками, он работает. Не обращайте внимания на ошибки в приведенном выше коде(если таковые имеются), я набрал его здесь. Спасибо!

Что я уже пробовал:

public static void main(String args[]) {
    String l = null;
    try{
        File file = new File("sample.txt");
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);

        int i = 0;
        while((l = br.readLine()) != null){
            System.out.println(l);
        }
        br.close();
    }
    catch(FileNotFoundException e){
        System.out.println("File Not Found");
    }
    catch(IOException ex){

    }
}

1 Ответов

Рейтинг:
1

Richard MacCutchan

while((l = br.readLine()) != null){

При первом вызове он считывает эту строку в переменную l, который вы затем показываете. В следующий раз, когда он будет вызван, будет достигнут конец файла, так что readLine возвращается null, и программа завершается.

Вам нужно сделать еще несколько операций обработки каждый раз, когда вы получаете ненулевую строку текста.