Manipulação de Arquivo TXT

7 respostas
augustocolom

Opa Galera…
Estou com grande dificuldade em ler um arquivo TXT em java, ele funciona assim:
O programa gera um Txt em formato todo diferente, eu gostaria de ler o txt ja organizado pelo Java…

Ele gera assim

[b]CLIPS> (reset)
CLIPS> (run)

CLIPS> (reset)
CLIPS> (run)

[color=red]The Engine Diagnosis Expert System

Does the engine start (yes/no)? sim
Does the engine start (yes/no)? no
Does the engine rotate (yes/no)? no
Is the battery charged (yes/no)? no

Suggested Repair:

Charge the battery.[/color] "[/b]

Gostaria que ele filtrasse o arquivo, lendo somente a parte em vermelha.

Alguem poderia dar alguma dica?

Lembrando que varia a forma que o arquivo é gerado…se tiver possibilidade de eu colocar algum marcador, sem problemas!

Abraços

7 Respostas

Felagund

depende do formato do arquivo.

é Html?

se for basta vc ver o código fonte e pegar as tags HTML e filtrar o arquivo.

augustocolom

Felagund:
depende do formato do arquivo.

é Html?

se for basta vc ver o código fonte e pegar as tags HTML e filtrar o arquivo.

Opa…
Na Verdade é um Arquivo TXT mesmo, eu gero o TXT com um Shell, só que no Txt aparece lixo, gostaria de algo que dissese para importar somente oque seja diferente da letra tal, no inicio, é possivel?

T

Ora, mas é bem simples. Basta ler todas as linhas, mas descartar as que começam com o tal lixo (algo como if (linha.startsWith ("CLIPS>")) … )

Metaleiro

[color=darkblue] Quando você lê o arquivo ele gera um Array é só você ler o Array e quando for igual as Strings que você não deseja passar uma String em “” : [/color]

int count = 0;
   while((linha = reader.readLine()) != null){
	            String[] leitura = linha.split(";");

	            if(leitura[count].equals("String")){
                       leitura[count] = "";
	            }
          count++;
}

[color=darkblue] Espero ter ajudado, caso isso não funcione para você, ainda tem outra opção, que é você buscar pela String da linha, quando você lê a linha inteira, você pega a String que não quer e usa o método : [/color]

String teste = "Teste de String";
teste.replaceAll("Teste de String", "");
lucksmack

oi pessoal

Estou participando desse forum justamente para aprender mais com todos vocês, a tão famosa linguagem JAVA, espero contar com a ajuda de todos.

Um grande abraço.

erdanielli

Uma implementação um pouquinho mais OO, deixando em objetos distintos as tarefas de:
1) Abrir, ler e fechar o arquivo: FileDecoder
2) Para cada linha lida, ela é o que procuro?: FileContentFilter
3) O que fazer ao ler uma linha que procuro?: FileContentCallback

Abraços!

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileDecoder {
	private BufferedReader file;
	
	public FileDecoder(String filename) {
		try {
			file = new BufferedReader(new FileReader(filename));
		} catch (FileNotFoundException e) {
			throw new IllegalArgumentException(e);
		}
	}

	public void decode(FileContentFilter filter, FileContentCallback callback) {
		try {
			String line = file.readLine();
			
			while (line != null) {
				if (filter.lineMatch(line)) {
					callback.processLine(line, file);
				}
				line = file.readLine();
			}
			
		} catch (IOException e) {
			throw new RuntimeException(e);
		} finally {
			try {
				file.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) throws Exception {
		// abre o arquivo p/ leitura
		FileDecoder fileDecoder = new FileDecoder("bin/data.txt");
		
		// processa todas as linhas do arquivo
		fileDecoder.decode(new FileContentFilter() {
			public boolean lineMatch(String line) {
				String cleanLine = line.trim();
				return !"".equals(cleanLine) && !cleanLine.startsWith("CLIPS>");
			}
		}, new FileContentCallback() {
			public void processLine(String currentLine, BufferedReader file)
					throws IOException {
				System.out.println(currentLine);
			}
		});
	}
	
}

interface FileContentFilter {
	boolean lineMatch(String line);
}

interface FileContentCallback {
	void processLine(String currentLine, BufferedReader file) throws IOException;
}
augustocolom

Opa Erdanielli,

desculpe a demora, mas este exemplo ajudou muito a entender.

Obrigadão

Criado 16 de março de 2009
Ultima resposta 30 de mar. de 2009
Respostas 7
Participantes 6