Importar Arquivo txt e armazenar em um vetor

3 respostas
Penny

Olá, preciso de ajuda para manipular os dados de um arquivo txt, a função do exercício é primeiro importar os dados que estão organizados em colunas, depois armazena-los num vetor e por último organiza-los usando quicksort, para o quicksort eu tenho um algoritmo para seguir e depois transformar em java, mas não estou conseguindo as primeiras etapas que é armazenar td num vetor, o código está assim:

public class Principal {

	public static void main(String[] args) 
	{
		
		try{ //começa tratamento de excessão
			
			String arquivo = "/home//EstDados/dados.txt";  //as barras estão assim pq uso linux
						
			StringBuffer conteudo = new StringBuffer(""); //armazena cada caractere do arquivo
			
			
			FileInputStream fi = new FileInputStream(arquivo); //cria um objeto que define o 
			//arquivo que vai ler ----->  fi
			
			int c; //vai receber o byte do arquivo
			
			while ((c = fi.read()) != -1) //o -1 indica o fim do arquivo
				//o read está trabalhando com byte, então pode importar qualquer extenção de 
				//arquivo, até mesmo com imagem
			{
				conteudo.append((char) c);
				/*String nomeAbrev = conteudo.substring(0, 5);
				String nomeInt   = conteudo.substring(7, 46);
				String end       = conteudo.substring(47, 107);
				String cidade    = conteudo.substring(108, 123);
				String ddd       = conteudo.substring(124, 132);
				String tel       = conteudo.substring(133, 145);
				
				System.out.println("Conteudo do Arquivo:\n" + nomeAbrev 
															+ nomeInt 
															+ end
															+ cidade
															+ ddd
															+ tel);	*/				
				
			}
			
			System.out.println("Conteudo do Arquivo:\n" + conteudo);
			fi.close();	
		} 
		catch (FileNotFoundException e1)
		{ 
			System.out.println("Não achou o arquivo arquivo");
		}
		catch (Exception e2)  //Exceção caso não funcione
		{
			System.out.println("Erro no tratamento do arquivo");
		}
		
	}
	
}

Da forma que está, eu imprimo apenas a variável conteudo que apresenta o arquivo inteiro, mas a parte comentada é a forma que estou tentando armazenar cada dado no vetor.

Eu sei que a lógica não está orientada a objeto, esse é outro desafio, eu acho que deveria ter uma classe para definir o arquivo, outra para fazer as ações que teria o main e uma para o tratamento de excessão, mas não consegui por em prática essa idéia, se alguém puder ajudar agradeço

Att Penny

3 Respostas

luciano2

Você não precisa criar uma classe para cada ação.

Basta você criar uma classe para armazenar os dados lidos do arquivo. Ex:

public Pessoa{ private String nomeInt; private String end; private String cidade; private String ddd; private String tel; }

Essa classe você vai usar para armazenar os dados lidos. Use os metódos crie os metódos get e set dos atributos.
a cada leitura no arquivo você vai preencher um novo objeto pessoa e inserir no arquivo.

Lembre-se sempre que for criar uma aplicação crie uma classe por Entidade e um metódo por ação.

Ex: Classes: Pessoa,Veiculo,Telefone
Métodos: Andar;Falar;Ligar;Telefonar

Penny

obrigada Luciano@@, vou seguir sua orientação para separar td em classes e métodos, mas de qualquer forma, o que eu não consigo é armazenar os dados individualmente no vetor

:oops:

luciano2

Você pode usar um List. A cada leitura no arquivo você instancia um objeto pessoa, preenche e adiciona no list.

Depois de ler todo o arquivo você vai criar o array com o tamanho da lista e adcionar os itens da lista no array.

Ex:
List<Pessoa> list = new ArrayList<Pessoa>();
 Pessoa p;
 while(){
    p = new pessoa();
    list.add(p);
 }

 Pessoa pessoas[] = new Pessoa[list.size()];

 for(int i = 0; i < list.size(); i++){
    pessoas[i] = list.get(i);
 }

no final pessoas sera um Array de objetos Pessoa

Criado 29 de abril de 2010
Ultima resposta 29 de abr. de 2010
Respostas 3
Participantes 2