BufferedReader não lê todo o arquivo. JAVA

bom dia amigos, tenho esse código logo abaixo e não consigo ler o texto inteiro que o o arquivo.txt contem
faltam as primeiras linhas.texto.txt (406,1 KB)

public static String Read(String caminho) {

		String conteudo = "";
		String CodReg;

		try {
			FileReader arq = new FileReader(caminho);
			BufferedReader lerarq = new BufferedReader(arq);
			String linha = "";

			try {
				
				while (linha != null) {
					conteudo += linha+"\n";
					linha = lerarq.readLine();
				}
				arq.close();

			} catch (IOException e) {

				System.out.println("Erro: nao foi possivel ler o arquivo");
				return "";
			}
		} catch (FileNotFoundException e) {
			System.out.println("Erro: arquivo nao encontrado");
			return "";

		}

		if (conteudo.contains("Erro")) {
			return "";
		} else {
			return conteudo;
		}

	}

alguém poderia me dar uma luz por favor? obrigado!

Cara a principio o codigo está correto

Coloquei a rodar aqui e ele leu, inclusive adicionei “Teste” na primeira e segunda linha

segue imagem

ahh é sua variavel conteudo que está recebendo a variavel linha antes de receber o valor do texto.

coloque depois e deve funcionar.

assim

            while (linha != null) {
                linha = lerarq.readLine();
                conteudo += linha + "\n";

            }

Oi Sandro, Obrigado, muito estranho porque o eclipse só me mostra uma parte, veja só
somente do registro 02 pra baixo

veja minha segunda resposta, acredito que seja isto

o código ficou dessa forma, o erro persiste :confused:

package arquivostxt;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Arquivo {

public static String Read(String caminho) {

	String conteudo = "";
	String CodReg;

	try {
		FileReader arq = new FileReader(caminho);
		BufferedReader lerarq = new BufferedReader(arq);
		String linha = "";

		try {
			linha = lerarq.readLine();
			while (linha != null) {
				linha = lerarq.readLine();
				conteudo += linha+"\n";

			}
			arq.close();

		} catch (IOException e) {

			System.out.println("Erro: nao foi possivel ler o arquivo");
			return "";
		}
	} catch (FileNotFoundException e) {
		System.out.println("Erro: arquivo nao encontrado");
		return "";

	}

	if (conteudo.contains("Erro")) {
		return "";
	} else {
		return conteudo;
	}

}

public static boolean Write(String caminho, String texto) {

	try {
		FileWriter arq = new FileWriter(caminho);
		PrintWriter gravararq = new PrintWriter(arq);
		gravararq.println(texto);
		gravararq.close();
		return true;
	} catch (IOException e) {
		System.out.println(e.getMessage());
		return false;
	}

}

}

você leu a primeira linha e não atribuiu a variavel conteudo

retire o primeiro readLine();

try {
			linha = lerarq.readLine();// retire esta linha 
			while (linha != null) {
				linha = lerarq.readLine();
				conteudo += linha+"\n";

			}
			arq.close();

Continua :frowning:

public static String Read(String caminho) {

	String conteudo = "";
	String CodReg;
	String linha = "";
	try {
		FileReader arq = new FileReader(caminho);
		BufferedReader lerarq = new BufferedReader(arq);

		try {
			// linha = lerarq.readLine();
			while (linha != null) {
				linha = lerarq.readLine();
				// conteudo += linha+"\n";

			}
			arq.close();

		} catch (IOException e) {

			System.out.println("Erro: nao foi possivel ler o arquivo");
			return "";
		}
	} catch (FileNotFoundException e) {
		System.out.println("Erro: arquivo nao encontrado");
		return "";

	}

	if (conteudo.contains("Erro")) {
		return "";
	} else {
		return linha;
	}

}

estranho que nessa sua ultima listagem a primeira linha, no arquivo que você passou está bem mais pro meio do arquivo

faz um teste

desativa a concatenação com o conteudo e coloca um system.out pra imprimir a linha, como abaixo

	    	while (linha != null) {
				linha = lerarq.readLine();
                                System.out.println(linha);
                                //conteudo += linha+"\n";

			}

você está lendo o arquivo correto?

1 curtida

vou tentar aqui, sim estou lendo o arquivo correto, o mesmo que esta ai em enexo

try {
		linha = lerarq.readLine(); //le a primeira linha
		while (linha != null) { // vai estar diferente de null
            System.out.println(linha) // vai imprimir
			linha = lerarq.readLine(); // vai obter a proxima
		}
		arq.close();

	}
1 curtida

DougF, Sandro Dei um reformulada no código mas continua do mesmo jeito.

caso eu queria capturar somente as linhas que comecem com 01 como eu faria? talvez isso resolva o problema

package layoutarquivos;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Exemplo {

public static void main(String[] args) {
	String linha;
	try {
		FileReader arq = new FileReader("texto.txt");
		BufferedReader lerarq = new BufferedReader(arq);
		try {

			linha = lerarq.readLine();

			while (linha != null) {
				System.out.println(linha);

				linha = lerarq.readLine();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	} catch (FileNotFoundException e) {
		System.out.println("arquivo nao encontrado");
		e.printStackTrace();
	}

}

}

o arquivo possui 865 linhas, mas por algum motivo o so me mostra apartir da linha 630

coloquei um contador e ele me da da a contagem correta de linha 865, que é a quantidade correta do arquivo, que estranho

package layoutarquivos;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Exemplo {

public static void main(String[] args) {
	String linha;
	try {
		FileReader arq = new FileReader("texto.txt");
		BufferedReader lerarq = new BufferedReader(arq);
		int i=0;
		try {

			linha = lerarq.readLine();

			while (linha != null) {
				i++;
				System.out.println(linha);

				linha = lerarq.readLine(); 
			}
			System.out.println("valor de I - " + i);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	} catch (FileNotFoundException e) {
		System.out.println("arquivo nao encontrado");
		e.printStackTrace();
	}

}

}

Onde você está visualizando as linhas impressas? No console do eclipse?

1 curtida

Exatamente Lucas! no eclipse, dentro do console.

Como não custa nada, verifique o limite de linha do console:

Botão direito no console > Preferences > Desmarque a opção “Limit console output”

1 curtida

O console não mostra tudo, coloca em debug e vê qual é a primeira linha… vai no passo a passo

1 curtida

Lucas, muito obrigado meu querido, era só essa besteira mesmo kkkk
DougF, Sandro, Muito obrigado pelo tempo e pela boa vontade de vocês! abraço!