Modificação de txt

9 respostas
C

Tenho o seguinte código que lê um txt, altera algumas coisas nele e grava em um outro txt:

import java.io.*;

public class Arquivo{

public static void main(String[] args){
    
    try {
        
        FileReader ler = new FileReader(new File("C:\\as11hm.txt"));
        BufferedReader origem = new BufferedReader(ler);

        FileWriter gravar = new FileWriter(new File("C:\\as11hm_mod.txt"),false);
     
        PrintWriter destino = new PrintWriter(gravar,true);
        
        String linha;
        char Char;
        
        while(origem.ready()) {
            
            linha = origem.readLine().replace('<',';').replace('>',' ');    //replaceAll("<", ";");
            gravar.write(linha + "\n");
            
            
        }
     
        destino.close();
        gravar.close();
        
        origem.close();
        ler.close();
    }
    
    catch(FileNotFoundException ex1) {
        
        System.out.println("Arquivo não encontrado.");
    }
 
    catch(IOException ex2) {
        
        System.out.println("Erro -> " + ex2);
    }
}

}

<WebLogic Server “as11hm” version:
WebLogic Server 8.1 SP4 Mon Nov 29 16:21:29 PST 2004 471647
WebLogic XMLX Module 8.1 SP4 Mon Nov 29 16:21:29 PST 2004 471647 © 1995, 1996, 1997, 1998 WebLogic, Inc.>

Este trecho teria que ser gravado na mesma linha no novo arquivo, mas no arquivo origem esta em três linhas. O que posso fazer?

9 Respostas

cassio

Tire o “\n” !!!

Ao invés de fazer:

linha = origem.readLine().replace('<',';').replace('>',' '); //replaceAll("<", ";");
gravar.write(linha + "\n");

Faça:

linha = origem.readLine().replace('<',';').replace('>',' '); //replaceAll("<", ";");
gravar.write(linha);

Falou!

C

Cara não funcionou, ficou tudo numa linha só, mas o arquivo é bem grande, não contém apenas as 3 linhas que eu postei!

Alguém teria uma outra dica

Valeu!

cassio

Foi vc mesmo que disse que teria que ficar tudo na mesma linha…

Mas se quiser q fique na mesma linha somente os trechos entre "< "e "> " (não sei se entendi direito) posta ai um trecho do teu arquivo pra eu dar uma olhada…

C

Seria apenas os trechos entre <>

C

Trecho do arquivo:

As linhas começam com ####

####<Jul 7, 2006 2:41:44 AM GMT-03:00>      <> <>  <Starting WebLogic Managed Server as11hm for domain Londres>

####<Jul 7, 2006 2:41:44 AM GMT-03:00>      <> <>  <WebLogic Server as11hm version:

WebLogic Server 8.1 SP4  Mon Nov 29 16:21:29 PST 2004 471647

WebLogic XMLX Module 8.1 SP4  Mon Nov 29 16:21:29 PST 2004 471647  © 1995, 1996, 1997, 1998 WebLogic, Inc.

© 1999, 2000, 2001 BEA Systems, Inc.>
cassio

Amigo, com algumas alterações no código da pra fazer isso sem problema…
Vc teria que verificar se a linha tem um "< " e começar a gravar sem o “\n” (concatenando as linhas.
Quando encontrar um “>” grava o "\n"no arquivo de saida e repete este procedimento até o fim do arquivo… Nada que expressões regulares e um laço while não façam…

Falou!

C

Você não teria um exemplo?

C

Alguém não teria um exemplo para me mostrar?

Tenho que usar o método endsWith(">")?

cassio

Se vc tiver certeza de que todas as linhas que fecham blocos tem o caracter “>” no fim, pode ser… vc teria q se certificar de quew não existem fechamento de blocos no meio das linhas das linhas, pois neste caso o endsWith(">") falharia :slight_smile:

Falou!

Criado 14 de julho de 2006
Ultima resposta 14 de jul. de 2006
Respostas 9
Participantes 2