Problema com .readLine()

7 respostas
java
E

Estou com problema para usar o .readLine(), criei um programa para fazer abrir um arquivo .txt , mas em meu código ele esta lindo apenas a ultima linha do arquivo.
ja tentei varias formas de ler o arquivos, mas esta dendo sempre o mesmo problema

Desde já , Agradeço.

try {
            // TODO add your handling code here:
            FileInputStream arq = new FileInputStream(txtNomeArquivo.getText() + ".txt");
            InputStreamReader arqAbrir = new InputStreamReader(arq);
            BufferedReader br = new BufferedReader(arqAbrir);
            String linha;
            
            while(br.readLine() != null){
                    if(br.readLine() != null){
                        linha = br.readLine();
                        txtATextoBn.setText(linha);
                    }
            }
            abrirArquivoBn.setVisible(false);
        } catch (IOException erro) {
            JOptionPane.showMessageDialog(null, "Erro ao Abrir Arquivo \n" + "Codigo de erro: "  + erro);
        }

7 Respostas

L

Olá,
creio que o problema esteja na linha:
linha = br.readLine();
Você precisa usar um StringBuilder ao invés de usar uma String para concatenar e armazenar todas as linhas do arquivo. Tente dessa forma:

StringBuilder linhas = new StringBuilder();
while(br.readLine() != null){
   linhas.append(br.readLine());
}

E

Olá, obrigado por responder.

Agora esta até funcionando, mas esta lindo uma linha sim outra não, e pondo uma ultima linha null.

Desde já agradeço.

L

Tente da seguinte forma:

StringBuilder linhas = new StringBuilder();
String linha = br.readLine();


while(linha != null){
 // Esse if não deve ser executado pois o teste
 // já está sendo feito pelo while
 //if(br.readLine() != null){
  linhas.append(linha);
  txtATextoBn.setText(linha);
  linha = br.readLine();
 //}
}

E

Coloquei da seguinte formo, como você havia dito, mas ai ele volta a me retornar apenas a ultima linha.

se eu utilizar so com a StringBuilder, ele me retorna quase todas a linhas, so que lindo uma linha e pulando outra, assim como mandei na imagem na postagem anterior.

Desde ja agradeço.

try {
            // TODO add your handling code here:
            FileReader arq = new FileReader(txtAbrirNomeArquivo.getText() + ".txt");
            BufferedReader br = new BufferedReader(arq);
            
            StringBuilder linhas = new StringBuilder();
            String linha = br.readLine();
            
            while(br.readLine() != null){
                linhas.append(linha);
                txtATextoBn.setText(linha);
                linha = br.readLine();
            }
            abrirArquivoBn.setVisible(false);
        } catch (IOException erro) {
            JOptionPane.showMessageDialog(null, "Erro ao Abrir Arquivo \n" + "Codigo de erro: "  + erro);
        }
J
try {
			Files.lines(Paths.get("CAMINHO COM ARQUIVO E EXTENSÃO")).forEach(System.out::println);
		} catch (IOException e) {
			e.printStackTrace();
		}
J

O luizsodrerj, já explicou e muito bem, mas e’ importante você entender o que ele detalhou.

while( br.readLine() != null ) {   // <--- br.readLine()   vai ler uma linha
      linhas.append(linha);     
      txtATextoBn.setText(linha);
      linha = br.readLine();   // aqui br.readLine() vai ler uma outra linha

}

E

isso eu compreendi, mas aqui esta dando algum erro estranho que esta exibindo apenas a ultima linha do arquivo txt
vou fazer alguns testes aqui, ai dou um retorno aqui e falo no que deu.

Desde ja agradeço.

Criado 23 de novembro de 2016
Ultima resposta 24 de nov. de 2016
Respostas 7
Participantes 4