Erro ao ler um arquivo

6 respostas
F

galera um erro ao ler um arquivo txt

public BufferedReader leTexto() throws IOException{
			file = new File("Z:\PMP\Perguntas_Word\Cópia de capitulo5.txt");
			FileReader reader = new FileReader(file);
			BufferedReader leitor = new BufferedReader(reader);
			leitor.close();
			reader.close();
			
			return leitor;
		 }
		  
		public void contaArquivo(BufferedReader arq) throws IOException{
			
			String linha =null;
			while((linha = arq.readLine())!=null) {
			    System.out.println("Linha: " + linha);
			}
		}  
	
	
	public static void main(String[] args) throws IOException {
		 PovoamentoBanco povo = new PovoamentoBanco();
		 BufferedReader buffer =povo.leTexto();
		 povo.contaArquivo(buffer);
	}
}

Alguma ideia?

O erro eh
Exception in thread "main" java.io.IOException: Stream closed

valeu!!

6 Respostas

jgbt
Foxan:
galera um erro ao ler um arquivo txt
public BufferedReader leTexto() throws IOException{
			file = new File("Z:\PMP\Perguntas_Word\Cópia de capitulo5.txt");
			FileReader reader = new FileReader(file);
			BufferedReader leitor = new BufferedReader(reader);
			leitor.close();
			reader.close();
			
			return leitor;
		 }
		  
		public void contaArquivo(BufferedReader arq) throws IOException{
			
			String linha =null;
			while((linha = arq.readLine())!=null) {
			    System.out.println("Linha: " + linha);
			}
		}  
	
	
	public static void main(String[] args) throws IOException {
		 PovoamentoBanco povo = new PovoamentoBanco();
		 BufferedReader buffer =povo.leTexto();
		 povo.contaArquivo(buffer);
	}
}

Alguma ideia?

O erro eh
Exception in thread "main" java.io.IOException: Stream closed

valeu!!

sera que não é pq vc da um close no stream chamado leitor e depois retorna ele p/ fora do metodo? :roll:

[]'s

T

Acho que a mensagem de erro está certa (Stream closed). você fechou o arquivo antes de ler as linhas.

leitor.close();
 			reader.close();
F

O problema era esse msm...
Mas tinha um porem, naum tinha como eu fechar o buffered e o reader depois do return pq dava erro tb!!!

Eu refiz uma parte do codigo e deu certo
public void leTexto() throws IOException{
			file = new File("Z:\PMP\Perguntas_Word\Cópia de capitulo5.txt");
			FileReader reader = new FileReader(file);
			BufferedReader leitor = new BufferedReader(reader);
					
			String linha =null;
			while((linha = leitor.readLine())!=null) {
			    System.out.println("Linha: " + linha);
			}
			
			leitor.close();
			reader.close();
		}
		  
		
	
	public static void main(String[] args) throws IOException {
		 PovoamentoBanco povo = new PovoamentoBanco();
		 povo.leTexto(); 
	}
}

Assim deu certo e tb pude usar o close.

valeu pela ajuda!!

jgbt

ok, ms acho que vc não entendeu pq não tava funcionando…

[]'s

T

Dica: se você faz o encapsulamento de uma classe de arquivos em outra (por exemplo: FileReader em BufferedReader, que foi o seu caso) é preciso fechar apenas a mais externa (no seu caso, a BufferedReader), porque as outras são fechadas automaticamente. Na verdade muita gente faz o seguinte:

String filename = new File("Z:\PMP\Perguntas_Word\Cópia de capitulo5.txt");
 			BufferedReader leitor = new BufferedReader (new FileReader (filename)); 			

 			String linha =null;
 			while((linha = leitor.readLine())!=null) {
 			    System.out.println("Linha: " + linha);
 			}
 			
 			leitor.close();

que é mais claro e funciona direitinho.

F

JGBT eu entendi sim, e pq eu tava fechando o fluxo antes de retornar :smiley:

THINGOL ja alterei a classe usando soh o fechamento mais externo!!

Masvaleu pela dica!!!

Criado 9 de agosto de 2005
Ultima resposta 9 de ago. de 2005
Respostas 6
Participantes 3