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
depende do formato do arquivo.
é Html?
se for basta vc ver o código fonte e pegar as tags HTML e filtrar o arquivo.
[quote=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.[/quote]
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?
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>")) … )
[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", "");
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.
Uma implementação um pouquinho mais OO, deixando em objetos distintos as tarefas de:
- Abrir, ler e fechar o arquivo: FileDecoder
- Para cada linha lida, ela é o que procuro?: FileContentFilter
- O que fazer ao ler uma linha que procuro?: FileContentCallback
Abraços!
[code]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;
}
[/code]
Opa Erdanielli,
desculpe a demora, mas este exemplo ajudou muito a entender.
Obrigadão