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

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

[code]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;
	
}[/code]

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.

[quote=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

[code]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;
	
}[/code]

[/quote]

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.

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

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.

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

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

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

Sandro Roberto