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
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
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
DougF
Maio 30, 2017, 5:27pm
#11
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
DougF
Maio 30, 2017, 6:03pm
#18
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!