Java: Как читать файл построчно, игнорируя "\n"

Я пытаюсь прочитать строку текстового файла в каждой строке. Строки разделяются с помощью возврата каретки ("\r\n"), и LineFeed (\ "n") допускается в текстовых полях, разделенных табуляцией.

Поскольку я хочу читать строку "Файл" на строку, я хочу, чтобы моя программа игнорировала отдельный "\ n". К несчастью, BufferedReader использует обе возможности для разделения строк. Как я могу изменить свой код, чтобы игнорировать автономный "\n"?

try 
{
    BufferedReader in = new BufferedReader(new FileReader(flatFile));
    String line = null;
    while ((line = in.readLine()) != null) 
    {
        String cells[] = line.split("\t");                          
        System.out.println(cells.length);
        System.out.println(line);
    }
    in.close();
} 
catch (IOException e) 
{
    e.printStackTrace();
}

3 ответа

Решение

Использовать java.util.Scanner,

Scanner scanner = new Scanner(new File(flatFile));
scanner.useDelimiter("\r\n");
while (scanner.hasNext()) {
    String line = scanner.next();
    String cells[] = line.split("\t");                          
    System.out.println(cells.length);
    System.out.println(line);
}

Вы можете просто пропустить пустые строки:

while ((line = in.readLine()) != null) {
    // Skip lines that are empty or only contain whitespace
    if (line.trim().isEmpty()) {
        continue;
    }

    String[] cells = line.split("\t");
    System.out.println(cells.length);
    System.out.println(line);
}

Вы можете использовать методы FileUtils.readLines из apache commons-io.

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

Другие вопросы по тегам