Ler caracteres de uma só coluna em um arquivo texto

5 respostas
R

Eu estou precisando de um auxilio.
Tenho um arquivo texto com informações de registros de um banco de dados. Desejo ler deste arquivo somento a coluna inscrições. Exemplo:

Conteudo do Arquivo.txt

01201203 Ricardo jorge
01203333 Roberto
52512522 José
25645564 Maria

Vou utilizar essas incrições para um nova consulta, porém são 4000 registros.
Preciso de um function que possa ler todos as inscrições(somente) e formata-las (colocando vírgula ao final da inscrição) e grava-las em um outro arquivo texto.

Obrigado.

5 Respostas

denisspitfire

Cara. eu fiz algo bem parecido!

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;

public class principal {
	public static void main(String[] args) throws Exception {
		Scanner arquivo = new Scanner(new FileReader("arquivo.txt"));
		ArrayList<Caracteristica> pilha = new ArrayList<Caracteristica>();
		Caracteristica objetoTemp;
		long inicio = System.currentTimeMillis();

		while (arquivo.hasNextLine()) {
			String linha = arquivo.nextLine();
			Caracteristica debenture = new Caracteristica();
			debenture.caracteristicas = linha.split(";");
			pilha.add(debenture);
		}
			for (int p = 0; p < pilha.size(); p++) {
				for (int i = 0; i < pilha.get(p).caracteristicas.length; i++) {
					if (i == pilha.get(p).caracteristicas.length-1) {
						String pontuacao = ".";
						System.out.print(pilha.get(p).caracteristicas[i]+ pontuacao);
					}
					else{
						String pontuacao = " ";
						System.out.print(pilha.get(p).caracteristicas[i]+ pontuacao);
					}
				}
				System.out.println("");
			}
		long fim = System.currentTimeMillis();
		long total = fim - inicio;
		System.out.println("Tempo Total: "+total);
	}
}

A diferença é que… no meu caso o txt era assim
campo;campo;campo;campo
No seu caso é só um " " que separa entre eles…
Na linha do Split voce vai alterar de “;” para " ". E ele vai fazer somente uma vez e ja passar para a outra parte do vetor ou pilha como eu fiz…
Eu fiz também com que cada uma das linhas fossem um objeto que tinha um vetor. Mas acho que voce nao precisará de tanto… creio que uma pilha de vetores ja resolva. Flw cara

R

Vou analisar, obrigado.

R

denisspitfire:
Cara. eu fiz algo bem parecido!

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;

public class principal {
	public static void main(String[] args) throws Exception {
		Scanner arquivo = new Scanner(new FileReader("arquivo.txt"));
		ArrayList<Caracteristica> pilha = new ArrayList<Caracteristica>();
		Caracteristica objetoTemp;
		long inicio = System.currentTimeMillis();

		while (arquivo.hasNextLine()) {
			String linha = arquivo.nextLine();
			Caracteristica debenture = new Caracteristica();
			debenture.caracteristicas = linha.split(";");
			pilha.add(debenture);
		}
			for (int p = 0; p < pilha.size(); p++) {
				for (int i = 0; i < pilha.get(p).caracteristicas.length; i++) {
					if (i == pilha.get(p).caracteristicas.length-1) {
						String pontuacao = ".";
						System.out.print(pilha.get(p).caracteristicas[i]+ pontuacao);
					}
					else{
						String pontuacao = " ";
						System.out.print(pilha.get(p).caracteristicas[i]+ pontuacao);
					}
				}
				System.out.println("");
			}
		long fim = System.currentTimeMillis();
		long total = fim - inicio;
		System.out.println("Tempo Total: "+total);
	}
}

A diferença é que… no meu caso o txt era assim
campo;campo;campo;campo
No seu caso é só um " " que separa entre eles…
Na linha do Split voce vai alterar de “;” para " ". E ele vai fazer somente uma vez e ja passar para a outra parte do vetor ou pilha como eu fiz…
Eu fiz também com que cada uma das linhas fossem um objeto que tinha um vetor. Mas acho que voce nao precisará de tanto… creio que uma pilha de vetores ja resolva. Flw cara

Como eu faria para criar, sem utilizar o objeto… Só usando simplesmente string.

denisspitfire

Seguinte…

String linha = arquivo.nextLine();
Caracteristica debenture = new Caracteristica();
debenture.caracteristicas=linha.split(";");
pilha.add(debenture);
Nesse código eu pego linha por linha usando o arquivo.nextLine();

depois eu crio um novo objeto( oque voce nao precisa fazer)

dentro desse objeto eu jogo um linha.split(";");

ou seja ele vai jogar o conteudo tratado da linha com o metodo split

bom… digamos que voce jogue em um vetor entao

vetor[0] = linha.split(";");
denisspitfire

Esqueci de falar que o vetor tem que ser um vetor de strings. ^^

Criado 12 de agosto de 2011
Ultima resposta 13 de ago. de 2011
Respostas 5
Participantes 2