[RESOLVIDO]Ler arquivo usando FileInputStream

2 respostas
F

Eaee Pessoal!!

Bom estou com o seguinte problema, ao ler um arquivo txt, por algum motivo, o codigo le a primeira linha do arquivo, depois le uma linha inteira em branco, depois le a segunda linha e outra linha inteira em branco.. e assim por diante.

Estou usando os seguintes metodos

Metodo para imprimir a Matriz

public void showTabuleiro(){
		System.out.print("  ");
		for(int y=0;y<numeroColunas;y++){
			System.out.print(y);
		}
		System.out.println();
		for(int x=0;x<numeroLinhas;x++){
			System.out.print(x+" ");
			for(int y=0;y<numeroColunas;y++){
				/*if(tabuleiro[x][y].getCasa() == ' '){
					System.out.print('#');
				}else{*/
					System.out.print(tabuleiro[x][y].getCasa());
					
				//}
			}
			System.out.println();
		}
	}
Metodo para ler o arquivo, e atribuir os valores para uma matriz
public void carregarTabuleiro(String arquivo) throws FileNotFoundException,IOException{
		char ch;
		int j;
		FileInputStream file = new FileInputStream(arquivo);
		for(int i = 0; i <numeroLinhas; i++) {
			//System.out.println("i="+i);
			for(j = 0; (ch = (char) file.read()) != '\n' && j < numeroColunas; j++) {
				//System.out.println("j1="+j);
				tabuleiro[i][j] = new Casa(ch);
			}
			//preenche o resto da linha com espaços
			for(; j < numeroColunas; j++) {
				//System.out.println("j2="+j);
				tabuleiro[i][j] = new Casa(' ');
			}
		}
		//carregarVetorEmbarcacoes();
		//inicializarTabuleiro();
	}

ao ler o seguinte arquivo

PPPPP    C
         C
   DD    C
C        C
 C        
  C  S   D
D  C    D 
D         
          
S S S   S

A matriz gerada fica no seguinte formato.

0 PPPPP    C
1           
2          C
3           
4    DD    C
5           
6 C        C
7           
8  C        
9

Alguem tem alguma ideia, do que estou fazendo errado?

2 Respostas

T

Para ler arquivos-texto, use isto aqui:

import java.io.BufferedReader;
import java.io.FileReader;
...
BufferedReader br  = null;
try {
    br = new BufferedReader (new FileReader ("arquivo"));
    for (String linha = br.readLine(); linha != null; linha = br.readLine()) {
        // faça alguma coisa com a linha lida.
    }
} finally {
    if (br != null) try { br.close(); } catch (IOException ex) { }    
}

É muito mais rápido, eficiente e seguro que usar diretamente FileInputStream no seu caso. E também não importa se você rodar o programa em Windows ou no Linux, que o resultado é o mesmo.

F

Vlww thingol…
Fiz igual voce falou, e funcionou ;D

Abraço!

Criado 3 de novembro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 2
Participantes 2