0

我从文件中读取数据时遇到问题。在每一行(除了第一行)第一个字符都丢失了!

也许我在编码方面遇到了麻烦,但我尝试设置 UTF-8、UniCode、ANSI,结果也一样快...

代码:

    try (FileReader fr = new FileReader("123.txt")) {
        // create a buffer for file reader
        BufferedReader br = new BufferedReader(fr);
        do {
            input = br.readLine();

            System.out.println(input);
        } while (br.read() != -1);
    } catch (IOException ex) {
        System.out.println("IOex : " + ex);
    }

安慰:

2
FFFFFF

FAF9F5

FDBCA1

FBCCB8

但必须是:

2
#FFFFFF
2
#FAF9F5
6
#FDBCA1
9
#FBCCB8
9

它只有在我在行前加上斜线时才有效。

2
\#FFFFFF
\2
\#FAF9F5
\6
\#FDBCA1
\9
\#FBCCB8
\9

会是什么?
谢谢!

4

1 回答 1

3

问题在于do循环结束:

do {
    input = br.readLine();
    if (input.endsWith("\n")) {
        input = input.substring(0, input.indexOf("\n"));
    }
    System.out.println(input);
} while (br.read() != -1);

您正在调用read()which 将读取下一行的第一个字符 - 但您使用它来检查文件是否已结束。(注意你是如何得到第一行的第一个字符的,因为你在调用readLine之前没有调用过read。)

这会很好 - 并且更简单:

String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

readLinenull当您到达数据末尾时返回。请注意,您不需要检查input包含\n,因为您已经一次读取一行,并且\n被视为行分隔符。

于 2013-10-06T08:32:58.873 回答