Leitura de arquivo texto

5 respostas
S

Salve galera.
To tentando fazer a leitura de um arquivo texto montei o cod abaixo mas ele so le a primeira linha. Como eu digo q é fim de arquivo na classe file?

public static void main(String args[]){
		File f = new File("../../../dados/lojas.txt");
		int marcador = 0;
		if(f.exists()){
			try{ //Tratando a execao
				BufferedReader br = new BufferedReader(new FileReader(f));
				String linha ="";
				
				while((linha = br.readLine())!=null){
					System.out.println(linha);
					StringBuffer sb = new StringBuffer().append(linha);
					for(int i=0;i<sb.length();i++){
						//System.out.println(marcador);
						if(sb.substring(i,i+1).equals(";")){
							if(marcador == 0){
								System.out.println("encontrado: " +
								sb.substring(marcador,i));
							} else {
								System.out.println("encontrado: " +
								sb.substring(marcador+1,i));
							}
							marcador = i;
						}
						if(sb.length() == (i + 1)){
							System.out.println("encontrado: " +
							sb.substring(marcador + 1,i+1));
							System.out.println("fim");
							
						}
					}
				}

			}catch(FileNotFoundException fe){
				System.out.println("Arquivo nao encontrado");
			}catch(IOException ie){
				System.out.println("Erro naleitura");
			}
		}else {//If
			System.out.println("Arquivo não encontrado.");
		}

Se alguem tiver umas dicas?

5 Respostas

R

Olha, respondendo sua pergunta, mas sem analisar muito seu código.
Declare a String fora do while, depois aicione o valor da próxima linha na string, ao final de tudo.

String s = br.readLine(); while (s != null){ System.out.println(s); s = br.readLine(); }

Espero ter ajudado.

S

Isto nao esta muito diferente do meu.

Mas o caso é q ele le somente a primeira linha.Da o erro abaixo

fim
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: -78
        at java.lang.StringBuffer.substring(StringBuffer.java:801)
        at LeArquivo3.main(LeArquivo3.java:21)
Press any key to continue...
S

O caso é que cod ate funciona, mas so le a primeira linha sempre.
Acho q falta fazer tipo um “rs.next()”, como mano ele ir ate o fim do arquivo?

W

o comando está abaixo.
while (br.ready()) {

S

Na verdade percebi que estava dando murro em ponta de faca.
Simplismente separei os metodos e consegui o que queria.
Assim eu tenho um metodo para ler o arquivo Que faz um loop ate o fim das linhas. e um seguindo q trata as linhas para mim.
O codigo é praticamente o mesmo.
Maravilha.

Valeu eim pessoal.

Criado 7 de dezembro de 2006
Ultima resposta 11 de dez. de 2006
Respostas 5
Participantes 3