BufferReader saída inesperada

Michal w:

Eu tenho esse método simples:

private String read(String filePath) throws IOException {
    FileReader fileReader = new FileReader(filePath);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String fileContent = "";
    StringBuilder stringBuilder = new StringBuilder(fileContent);

    while (bufferedReader.readLine() != null){
        System.out.println(bufferedReader.readLine());
        stringBuilder.append(bufferedReader.readLine());
    }
    return fileContent;
}

Como você pode ver na linha 8 Eu incluí impressão para fins debuging Gostaria que este método para retornar Cadeia deste arquivo txt:

1a1
2b 2a
3c 3b 3a
4d 4cr 4bb4 4a
5e 5d 5c 5b 5ax
6f 6ea 6d 6ca 6bb 6a
7g 7f 7ea

por alguma razão saída é assim:

2b 2a
5e 5d 5c 5b 5ax
null

Por que ele lê apenas a segunda e quinta linha? Onde este nulo vem? String retornada no fim parece vazio.

Eu gostaria de entender o que está acontecendo aqui. Valeu :)

dasblinkenlight:

Isto é porque você usa todos os terceira linha no whileloop do nullcheque, imprimir cada terceira contagem de linha de dois, e acrescentar a cada três contagem de linha de três, como este:

1  null check
2  print
3  append
4  null check
5  print
6  append
7  null check
8  print
9  append
... and so on

Você deve salvar a linha que você lê em uma Stringvariável e usá-lo dentro do loop, como segue:

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

Agora o cabeçalho circuito combina uma atribuição e uma nullseleção e a variável atribuído a partir readLinerepresenta a última linha lida do arquivo.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=184131&siteId=1
Recomendado
Clasificación