Meu programa le apenas a ultima linha do arquivo, eu ja tentei de tudo varios codigos na internet e nada resolve, alguem saberia dizer o queta acontecendo aqui?
pedaço do codigo abaixo
try {
FileInputStream arquivo = new FileInputStream("agenda.txt");
InputStreamReader arqabrir = new InputStreamReader(arquivo);
BufferedReader br = new BufferedReader(arqabrir);
StringBuilder linhas = new StringBuilder();
String linha = br.readLine();
while(br.readLine() != ""){
linhas.append(linha);
telaAgenda.setText(linha);
linha = br.readLine();
}
} catch (IOException ex) {
Logger.getLogger(Contatos.class.getName()).log(Level.SEVERE, null, ex);
}
mesma coisa, ja nao sei mais o que fazer pra resolver
estou colocando dentro de um JTextArea tem algum problema? será que é por isso que ta acontecendo isso?
Como também estou mechendo com arquivos em java,
acabei de testar seu código e não encontrei nenhum erro,
consegui ler mais de 2000000 de linhas num arquivo longo.
Apenas comentei a linha // telaAgenda.setText(linha); e
Usei System.out.println ( linha );
Com certeza o erro está relacionado ao TextArea.
Vou testar agora usando um TextArea do JavaFX.
O setText não concatena texto ele substitui o texto, assim, após passar da última linha o texto será a última linha.
Adicione as linhas em um StringBuilder e só faça o setText quando tiver saído do laço.
então consegui resolver por hora da seguinte forma:
como estava lendo apenas uma linha sim outra nao, na hora de armazenar eu armazenei com um " \n"
deu certo e ficou bom por enquanto.
ficou assim para quem quiser dar uma olhada:
FileInputStream arquivo = new FileInputStream("agenda.txt");
InputStreamReader arqabrir = new InputStreamReader(arquivo);
BufferedReader br = new BufferedReader(arqabrir);
StringBuilder linhas = new StringBuilder();
String linha = br.readLine();
telaAgenda.setText("");
while(br.readLine() != null){
linhas.append(linha);
telaAgenda.setText(telaAgenda.getText() + "\n" + linha);
linha = br.readLine();
}
} catch (IOException ex) {
Logger.getLogger(Contatos.class.getName()).log(Level.SEVERE, null, ex);
}
e na leitura eu coloquei assim:
try {
FileWriter arquivo = new FileWriter(“agenda.txt”, true);
PrintWriter escreva = new PrintWriter(arquivo);
Você não está prestando atenção no código que escreveu, veja:
String linha = br.readLine(); // aqui você leu uma linha e não fez nada com ela
telaAgenda.setText("");
while(br.readLine() != null) { // aqui você leu a linha seguinte e não fez nada com ela
linhas.append(linha); // aqui você está adicionando a linha lida pela penúltima vez e adicionando num StringBuilder
telaAgenda.setText(telaAgenda.getText() + "\n" + linha); // aqui tá setando o texto do textArea, ou seja, não tá usando o StringBuilder pra nada
linha = br.readLine(); // aqui está lendo a linha seguinte
}
Faça assim:
StringBuilder linhas = new StringBuilder();
String linha = null;
while ( (linha = br.readLine()) != null ) {
linhas.append(linha).append("\n");
}
telaAgenda.setText(linhas.toString().trim());
PERFEITO! muito obrigada mesmo! Ajudou muito com essa duvida!
agora como eu faço caso eu quisesse pesquisar uma palavra dentro desse arquivo?
ou excluir parte dele?
valeu cara, ajudou demais mesmo.
nao sei como agradecer