LER TXT, trocar espaços por caracter, ordenar e gravar em outro TXT e por ultimo consultar

7 respostas
S

Gente boa tarde a todos gostaria de uma ajuda,

tenho um arquivo txt com numeros do tipo:

01 02 03 10 15 50 30
60 100 55 40 30 10 50

* primeiramente queria fazer o seguinte primeiro deixar os numeros com 01-02-03-10-15-50-30 (-) no lugar dos espaços, se eu não me engano o trim tira os espaços mais não seria para esse caso, seria o replace fazer a troca do espaço pelo caracter?

linha = linha.replace(" ", "-");

* segundo queria deixar em ordem crescente:

01-02-03-10-15-30-50
10-30-40-50-55-60-100

nesse caso eu usaria o que? hashmap, treemap?

* terceiro e uiltimo queria poder pesquisar, tipo ai tem 2 linhas com 7 acho que colunas ou 7 numero separados por sinal de menos(-),
queria tipo eu digitar 01-02-03-10-15-30-50 ele achava e me dava mensagem que achou se não, dava uma mensagem que não achou, obs: sempre vai ter 7 casas não vai passar disso.

A possibilidade de fazer esse exemplo? muito obrigado a todos

Sandro Andrade

import java.io.*;



public class Arquivos {

	public static void main(String[] args) {

		copiarArquivo("C:\\manipulacao\\origem.txt", "C:\\manipulacao\\destino.txt");
		
	}

	public static Boolean copiarArquivo(String origem, String destino){
		Boolean copia = false;
		
		File f = new File(origem);
		
		if (!f.exists()){
			copia = false;
			System.out.println("O Arquivo " + origem + " Não Existe");
		}
		
		try {
			FileReader i = new FileReader(origem);
			FileWriter o = new FileWriter(destino);
			BufferedReader br = new BufferedReader(i);
			PrintWriter out = new PrintWriter(o);
			String linha;
				
			
			while ((linha = br.readLine()) != null){
				linha = linha.replace("	", "-");
				out.println(linha);
				
				
			}
			out.flush();
			i.close();
			o.close();
			copia = true;
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		System.out.println("Arquivo copiado com Sucesso!!!!");
		return copia;
		
	}

7 Respostas

B

Olá,

Para ordenar você pode umar uma collection e utilizar o método sort.

Sobre o replacement, isto só irá funcionar se você ler toda a sequência como uma só.

O que eu recomendo você fazer

1) Ler cada número separado
2) Colocar na collection e ordenar
3) Escrever cada com os '-'

O terceiro item não entendi muito bem o que você quis dizer.

spfcsandrolcf:
Gente boa tarde a todos gostaria de uma ajuda,

tenho um arquivo txt com numeros do tipo:

01 02 03 10 15 50 30
60 100 55 40 30 10 50

* primeiramente queria fazer o seguinte primeiro deixar os numeros com 01-02-03-10-15-50-30 (-) no lugar dos espaços, se eu não me engano o trim tira os espaços mais não seria para esse caso, seria o replace fazer a troca do espaço pelo caracter?

linha = linha.replace(" ", "-");

* segundo queria deixar em ordem crescente:

01-02-03-10-15-30-50
10-30-40-50-55-60-100

nesse caso eu usaria o que? hashmap, treemap?

* terceiro e uiltimo queria poder pesquisar, tipo ai tem 2 linhas com 7 acho que colunas ou 7 numero separados por sinal de menos(-),
queria tipo eu digitar 01-02-03-10-15-30-50 ele achava e me dava mensagem que achou se não, dava uma mensagem que não achou, obs: sempre vai ter 7 casas não vai passar disso.

A possibilidade de fazer esse exemplo? muito obrigado a todos

Sandro Andrade

import java.io.*;



public class Arquivos {

	public static void main(String[] args) {

		copiarArquivo("C:\\manipulacao\\origem.txt", "C:\\manipulacao\\destino.txt");
		
	}

	public static Boolean copiarArquivo(String origem, String destino){
		Boolean copia = false;
		
		File f = new File(origem);
		
		if (!f.exists()){
			copia = false;
			System.out.println("O Arquivo " + origem + " Não Existe");
		}
		
		try {
			FileReader i = new FileReader(origem);
			FileWriter o = new FileWriter(destino);
			BufferedReader br = new BufferedReader(i);
			PrintWriter out = new PrintWriter(o);
			String linha;
				
			
			while ((linha = br.readLine()) != null){
				linha = linha.replace("	", "-");
				out.println(linha);
				
				
			}
			out.flush();
			i.close();
			o.close();
			copia = true;
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		System.out.println("Arquivo copiado com Sucesso!!!!");
		return copia;
		
	}

L

Para resolver a pergunta 03. Você vai gravar no txt. Ler a primeira linha do documento, converter a primeira linha para String, e comparar com o digitado na tela.

S

bffermino, obrigado pela dica olha só como são linhas com numeros exemplo:

01 20 15 50 02 21 16

05 30 21 17 01 10 40

10 05 02 20 31 19 14

ja consegui fazer com o replace ficar assim:

01-20-15-50-02-21-16

05-30-21-17-01-10-40

10-05-02-20-31-19-14

agora eu preciso ordenar cada linha para ficar assim

01-02-15-16-20-21-50

01-05-10-17-21-30-40

02-05-10-14-19-20-31

e gravar em um TXT essa resposta, ai sim vou fazer o que o amigo lordtiago falou vou consultar nessenovo TXT e ja ordenado.

Obs: terei 100 linhas e ja fiz o replace nas 100 linhas troquei o espaço pelo sinal de MENOS (-), agora so falar ordenar e gravar em um novo TXT que no caso seria o Destino.txt

Sandro Roberto

L

Como o fermino disse o mais correto é:

  1. Ler cada número separado
  2. Colocar na collection e ordenar

Para depois você colocar os traços.

S

lordtiago vc tem como me mostrar um exemplo ou ate mesmo no exemplo que eu estou passando ?

J

Vocês já consideraram o uso do StringUtils do Apache-commons? Ele ajuda bastante para manipulação de Strings.

S

Alguem poderia ajudar, falta só ordenar como faço nesse exemplo? Preciso de Ajuda gente…

Sandro Roberto

Criado 3 de março de 2011
Ultima resposta 5 de mar. de 2011
Respostas 7
Participantes 4