Formatação de aquivo txt

37 respostas
G

Tenho determinado arquivo e preciso formatar. Existe alguma classe que faça formatação de arquivos? Abaixo esta a formatação do arquivo.

2013",“800”,“500”,“1700”,“2”,“2”,“3”,“21”,“22”,“22”,“1”,“1”,“1”,“800”,“800”,“2300”,“0”,“0”,“0”,“0”,“0”,“0”,“0”,“0”,“0”,“800”,“800”,“2300”,“0”,“0”,“0”,“3:01 am SEP 24, 2012”,“11:00 am MAR 19, 2009”,"","","",“9:24 am JUL 23, 2009”,“120”,“0”,“0”,“0”,“45”,“800”,“0”,“4”,“1500”,“4”,“44”,“800”,“0”,“1”,“1000”,“2”,“43”,“800”,“0”,“45”,“2300”,“0”,“42”,“800”,“0”,“44”,“2300”,“0”,“41”,“800”,“0”,“43”,“2300”,“0”

Obrigado.

37 Respostas

Rodrigo_Sasaki

Seria muito mais fácil se você dissesse em que formato quer deixar o arquivo :slight_smile:

jeffev

Também não entendi o que você precisa fazer.

G

Eu queria apagar somente a primeira linha e gerar um novo arquivo formatado na extensão .txt.

jeffev

Mas esse arquivo vai ficar com qual informação?

Somente com os valores, sem os " e , ?

G

Então…

Gostaria de saber se tem alguma forma de separar os valores em colunas e informar se existe valor “x” em alguma coluna.

Rodrigo_Sasaki

Por que você não mostra um exemplo de como quer que fique? Acho que vai ser mais fácil

G

Explicando melhor todo dia é reportado um arquivo txt de um servidor que temos aqui e neste arquivo mostram como está o servidor e eu estava pensando em importar este arquivo txt e localizar dentro deste arquivo um valor “x”. E essa rotina é alternativa para uma automatização do checklist.

Teria alguma idéia de como posso fazer isso?!

Rodrigo_Sasaki

gt3000:
Explicando melhor todo dia é reportado um arquivo txt de um servidor que temos aqui e neste arquivo mostram como está o servidor e eu estava pensando em importar este arquivo txt e localizar dentro deste arquivo um valor “x”. E essa rotina é alternativa para uma automatização do checklist.

Teria alguma idéia de como posso fazer isso?!

Encontrar um X em qualquer lugar no arquivo? é possível sim, e muito fácil

Esse artigo do GUJ ensina a manipular arquivos, olhe a parte de leitura, assim que você estiver percorrendo linha a linha, é só procurar o X como normalmente faria em uma String.

G

Rodrigo Sasaki:
gt3000:
Explicando melhor todo dia é reportado um arquivo txt de um servidor que temos aqui e neste arquivo mostram como está o servidor e eu estava pensando em importar este arquivo txt e localizar dentro deste arquivo um valor “x”. E essa rotina é alternativa para uma automatização do checklist.

Teria alguma idéia de como posso fazer isso?!

Encontrar um X em qualquer lugar no arquivo? é possível sim, e muito fácil

Esse artigo do GUJ ensina a manipular arquivos, olhe a parte de leitura, assim que você estiver percorrendo linha a linha, é só procurar o X como normalmente faria em uma String.

Vou dar uma olhada nesse arquivo, muito obrigado por enquanto.

G

Eu dei uma olhada no artigo que na verdade não ajudou muita coisa neh…vc sabe como posso jogar as linhas em um array e estive pensando como posso jogar as colunas do arquivo em linhas.

Poderia me ajudar?!

Rodrigo_Sasaki

Mas se você quer achar um X em qualquer lugar do arquivo pra que quer dividir em colunas?

G

Eu gostaria de encontrar o “x” no arquivo mas tb gostaria que se ele encontrasse mostrasse os campos organizados em linhas(por isso queria separar em colunas para depois jogar em linhas) a saída seria em um JTextField, ou seja, seria só para localizar se existe algum erro.

guilherme.dio

Este arquivo esta formatado no padrão CSV ? correto ?

Se for, eu tenho um pacote de classes que montei para serializar/deserializar CSVs para objeto java e vice versa.

G

guilherme.dio:
Este arquivo esta formatado no padrão CSV ? correto ?

Se for, eu tenho um pacote de classes que montei para serializar/deserializar CSVs para objeto java e vice versa.

Pode mandar esses códigos pra mim!?

guilherme.dio

gt3000:
guilherme.dio:
Este arquivo esta formatado no padrão CSV ? correto ?

Se for, eu tenho um pacote de classes que montei para serializar/deserializar CSVs para objeto java e vice versa.

Pode mandar esses códigos pra mim!?

Copia todoas as classes daqui:

https://github.com/ggdio/ProjectUtils/tree/master/src/main/java/br/com/ggdio/serializacao

Após isso, adicione em seu projeto e adapte os nomes dos pacotes e etc…

Depois, basta vc usar da seguinte maneira:

//Instancie a classe Serializador e passe um transformador CSV para ela:
Serializador serializador = new Serializador(new TransformadorCSV());
serializador.setClasse(SuaClasseModelo.class);

//Informe o arquivo, pode ser csv, txt, tanto faz, desde que esteja no padrão csv:
SuaClasseModelo objeto = (SuaClasseModelo) serializador.serializa(new File("arquivo.csv"));

//Agora é só usar seu objeto
//...
//...

EDIT: Eu não tenho o JAR gerado aqui, por isso te passei direto os fontes…

G

Dei uma olhada nesses códigos e isso não resolve a minha dúvida.

Eu pretendo ler esse arquivo txt e depois disso organizar as colunas em linhas separadas.

Tem como fazer isso?!

guilherme.dio

gt3000:
Dei uma olhada nesses códigos e isso não resolve a minha dúvida.

Eu pretendo ler esse arquivo txt e depois disso organizar as colunas em linhas separadas.

Tem como fazer isso?!

Não serve ? tem certeza ?

Concorda que se vc obter os dados do arquivo em objetos java, fica muito mais fácil para você implementar lógicas ?

E após vc realizar tudo o que precisar nos objetos, basta deserializar de volta para um arquivo.

G

Na vdd cara, tô meio perdido com relação a este assunto. Você pode me ajudar?

vlw

Arthur_F_Ferreira

Talvez, apesar dos seus esforços, seja você quem não está explicando o que quer exatamente. Você disse que quer ler o arquivo.txt com esses registros e dividir em colunas e linhas. Quantas colunas? Como que você vai qual registro é de determinada coluna?

Respondendo a uma das suas dúvidas, você pode dividir essa sua lista em um vetor sim:

public static void main(String[] args) throws FileNotFoundException {
    // Cria um scanner para ler do arquivo.
    Scanner scanner = new Scanner(new File("arquivo.txt"));
    
    // Variável para armazenar as linhas concatenadas do arquivo.
    String linha = "";
    
    // Loop para fazer a leitura e concatenação das linhas do arquivo.
    while(scanner.hasNext()) {
        linha = linha + scanner.next();
    }
    
    // Remove todas as aspas do texto.
    linha = linha.replace("\"", "");
    
    // Vetor para armazenar todas as informações do texto.
    String[] vetor = linha.split(",");
    
    // Loop para exibir cada registro do vetor.
    for (String texto : vetor) {
        System.out.println(texto);
    }
    
    // Fecha o scanner.
    scanner.close();
}
G

Então vou tentar explocar o necessito.

Diariamente são criados determinados arquivos no formato txt e precisaria exporta-los, realizar a leitura do mesmo, e exibir na tela os dados se existe tal valor dentro deste arquivo.

Arthur_F_Ferreira

Ok, até aí o que o Sasaki disse é a resposta:

public static void main(String[] args) throws FileNotFoundException {
    // Cria um scanner para ler do arquivo.
    Scanner scanner = new Scanner(new File("arquivo.txt"));

    // Variável para armazenar as linhas concatenadas do arquivo.
    String linha = "";

    // Loop para fazer a leitura e concatenação das linhas do arquivo.
    while (scanner.hasNext()) {
        linha = linha + scanner.next();
    }

    // Remove todas as aspas do texto.
    linha = linha.replace("\"", "");

    // Verifica se existe o valor '1700' no texto.
    System.out.println(linha.contains("1700"));
    
    // Fecha o scanner.
    scanner.close();
}

Porém, há algo a mais que você queria fazer caso fosse encontrado alguma coisa, certo?

G

Então preciso sim…precisaria que fosse feita uma busca pela palavra Down no arquivo de texto.

Arthur_F_Ferreira

Então basta você substituir o número “1700” no último código que eu passei acima:

public static void main(String[] args) throws FileNotFoundException {  
        // Cria um scanner para ler do arquivo.  
        Scanner scanner = new Scanner(new File("arquivo.txt"));  
      
        // Variável para armazenar as linhas concatenadas do arquivo.  
        String linha = "";  
      
        // Loop para fazer a leitura e concatenação das linhas do arquivo.  
        while (scanner.hasNext()) {  
            linha = linha + scanner.next();  
        }  
      
        // Remove todas as aspas do texto.  
        linha = linha.replace("\"", "");  
      
        // Verifica se existe o valor 'Down' no texto.  
        System.out.println(linha.contains("Down"));  
          
        // Fecha o scanner.  
        scanner.close();  
    }

Agora, o que você quer fazer caso encontre um registro? Como você disse anteriormente, eu suponho que você queira recuperar algo a mais, certo?

G

Arthur F. Ferreira:
Então basta você substituir o número “1700” no último código que eu passei acima:

public static void main(String[] args) throws FileNotFoundException {  
        // Cria um scanner para ler do arquivo.  
        Scanner scanner = new Scanner(new File("arquivo.txt"));  
      
        // Variável para armazenar as linhas concatenadas do arquivo.  
        String linha = "";  
      
        // Loop para fazer a leitura e concatenação das linhas do arquivo.  
        while (scanner.hasNext()) {  
            linha = linha + scanner.next();  
        }  
      
        // Remove todas as aspas do texto.  
        linha = linha.replace("\"", "");  
      
        // Verifica se existe o valor 'Down' no texto.  
        System.out.println(linha.contains("Down"));  
          
        // Fecha o scanner.  
        scanner.close();  
    }

Agora, o que você quer fazer caso encontre um registro? Como você disse anteriormente, eu suponho que você queira recuperar algo a mais, certo?

Eu gostaria de mostra um msg na tela. Quais classes eu importo?!

Arthur_F_Ferreira
public static void main(String[] args) throws FileNotFoundException {
    // Cria um scanner para ler do arquivo.
    Scanner scanner = new Scanner(new File("arquivo.txt"));

    // Variável para armazenar as linhas concatenadas do arquivo.
    String linha = "";

    // Loop para fazer a leitura e concatenação das linhas do arquivo.
    while (scanner.hasNext()) {
        linha = linha + scanner.next();
    }

    // Remove todas as aspas do texto.
    linha = linha.replace("\"", "");

    // Verifica se existe o valor '1700' no texto.
    System.out.println(linha.contains("Down"));
    
    JFrame frame = new JFrame();
    
    JOptionPane.showMessageDialog(frame,"Mensagem a ser exibida");
    
    // Fecha o scanner.
    scanner.close();
}

Substitua o texto “Mensagem a ser exibida” pela mensagem que vc quer.

G

Tentei compilar e apresentou o erro em anexo. Segue o código.

import java.io.*;    
import java.util.*; 

	public class Gustavo {
	
	public static void main(String[] args) throws FileNotFoundException {  
        // Cria um scanner para ler do arquivo.  
        Scanner scanner = new Scanner(new File("arquivo.txt"));  
      
        // Variável para armazenar as linhas concatenadas do arquivo.  
        String linha = "";  
      
        // Loop para fazer a leitura e concatenação das linhas do arquivo.  
        while (scanner.hasNext()) {  
            linha = linha + scanner.next();  
        }  
      
        // Remove todas as aspas do texto.  
        linha = linha.replace("\"", "");  
      
        // Verifica se existe o valor '1700' no texto.  
        System.out.println(linha.contains("Down"));  
          
        JFrame frame = new JFrame();  
          
        JOptionPane.showMessageDialog(frame,"Mensagem a ser exibida");  
          
        // Fecha o scanner.  
        scanner.close();  
    } }

Arthur_F_Ferreira

Faltou import:

import javax.swing.JFrame;
import javax.swing.JOptionPane;
G

Como faço para exibir as linhas quebradas?

Arthur_F_Ferreira

Linhas quebradas vc diz os registros do vetor? Se for isso pegue cada registro e concatene numa string (o loop que faz isso já está aí no código). Depois pegue essa string e exiba.

G
Arthur F. Ferreira:
Linhas quebradas vc diz os registros do vetor? Se for isso pegue cada registro e concatene numa string (o loop que faz isso já está aí no código). Depois pegue essa string e exiba.

Tentei fazer isso mas não consegui...

import java.io.*;    
import java.util.*; 
import javax.swing.JFrame;  
import javax.swing.JOptionPane; 

	public class Gustavo {
	
	public static void main(String[] args) throws FileNotFoundException {  
        // Cria um scanner para ler do arquivo.  
        Scanner scanner = new Scanner(new File("C:\\Users\\T3171706\\Documents\\reports_java\\report_st_he.txt"));  
      
        // Variável para armazenar as linhas concatenadas do arquivo.  
        String linha = "";  
      
        // Loop para fazer a leitura e concatenação das linhas do arquivo.  
        while (scanner.hasNext()) {  
            linha = linha + scanner.next();  
        }  
      
        // Remove todas as aspas do texto.  
        linha = linha.replace("\"", "");  
      
        // Verifica se existe o valor '1700' no texto.  
        System.out.println(linha.contains("UP"));  
          
        JFrame frame = new JFrame();  
          
        JOptionPane.showMessageDialog(frame,"Msg encontrada na linha: \n"  + linha + "\n");  
          
        // Fecha o scanner.  
        scanner.close();  
    } }

Ficou um JOptionPane imenso na tela.

Arthur_F_Ferreira

Se você quer exibir somente a linha onde o texto foi encontrado, mude:

public static void main(String[] args) throws FileNotFoundException {
    // Cria um scanner para ler do arquivo.
    Scanner scanner = new Scanner(new File("C:\\Users\\T3171706\\Documents\\reports_java\\report_st_he.txt"));

    // Variável para armazenar as linhas concatenadas do arquivo.
    String linha = "";
    
    // Variável para exibir o log que foi encontrada a condição.
    String exibirLog = "";

    // Loop para fazer a leitura e concatenação das linhas do arquivo.
    while (scanner.hasNext()) {
        // Recupera a próxima linha do texto.
        linha = scanner.next();
        
        // Verifica se 'UP' existe na linha e concatena na mensagem a ser exibida.
        if(linha.contains("UP")) {
            exibirLog = exibirLog + linha + "\n";
        }
    }

    // Remove todas as aspas do texto.
    linha = linha.replace("\"", "");

    // Verifica se existe o valor '1700' no texto.
    System.out.println(linha.contains("UP"));

    // Cria um frame.
    JFrame frame = new JFrame();

    // Exibe a mensagem de log num diálogo.
    JOptionPane.showMessageDialog(frame, "Msg encontrada na linha: \n" + linha + "\n");

    // Fecha o scanner.
    scanner.close();
}
G
import java.io.*;    
import java.util.*; 
import javax.swing.JFrame;  
import javax.swing.JOptionPane; 

	public class Gustavo {
	
	public static void main(String[] args) throws FileNotFoundException {  
    // Cria um scanner para ler do arquivo.  
    Scanner scanner = new Scanner(new File("C:\\Users\\T3171706\\Documents\\reports_java\\report_st_he.txt"));  
  
    // Variável para armazenar as linhas concatenadas do arquivo.  
    String linha = "";  
      
    // Variável para exibir o log que foi encontrada a condição.  
    String exibirLog = "";  
  
    // Loop para fazer a leitura e concatenação das linhas do arquivo.  
    while (scanner.hasNext()) {  
        // Recupera a próxima linha do texto.  
        linha = scanner.next();  
          
        // Verifica se 'UP' existe na linha e concatena na mensagem a ser exibida.  
        if(linha.contains("UP")) {  
            exibirLog = exibirLog + linha + "\n";  
        }  
    }  
  
    // Remove todas as aspas do texto.  
    linha = linha.replace("\"", "");  
  
    // Verifica se existe o valor '1700' no texto.  
    System.out.println(linha.contains("UP"));  
  
    // Cria um frame.  
    JFrame frame = new JFrame();  
  
    // Exibe a mensagem de log num diálogo.  
    JOptionPane.showMessageDialog(frame, "Msg encontrada na linha: \n" + linha + "\n");  
  
    // Fecha o scanner.  
    scanner.close();  
} }

Tem como exbir o conteudo da linha?!

Arthur_F_Ferreira
public static void main(String[] args) throws FileNotFoundException {
    // Cria um scanner para ler do arquivo.
    Scanner scanner = new Scanner(new File("C:\\Users\\T3171706\\Documents\\reports_java\\report_st_he.txt"));

    // Variável para armazenar as linhas concatenadas do arquivo.
    String linha = "";
    
    // Variável para exibir o log que foi encontrada a condição.
    String exibirLog = "";

    // Loop para fazer a leitura e concatenação das linhas do arquivo.
    while (scanner.hasNext()) {
        // Recupera a próxima linha do texto.
        linha = scanner.next();
        
        // Verifica se 'UP' existe na linha e concatena na mensagem a ser exibida.
        if(linha.contains("UP")) {
            exibirLog = exibirLog + linha + "\n";
        }
    }

    // Cria um frame.
    JFrame frame = new JFrame();

    // Exibe a mensagem de log num diálogo.
    JOptionPane.showMessageDialog(frame, "Msg encontrada na linha: \n" + linha + "\n");

    // Fecha o scanner.
    scanner.close();
}
G
Arthur F. Ferreira:
public static void main(String[] args) throws FileNotFoundException {
    // Cria um scanner para ler do arquivo.
    Scanner scanner = new Scanner(new File("C:\\Users\\T3171706\\Documents\\reports_java\\report_st_he.txt"));

    // Variável para armazenar as linhas concatenadas do arquivo.
    String linha = "";
    
    // Variável para exibir o log que foi encontrada a condição.
    String exibirLog = "";

    // Loop para fazer a leitura e concatenação das linhas do arquivo.
    while (scanner.hasNext()) {
        // Recupera a próxima linha do texto.
        linha = scanner.next();
        
        // Verifica se 'UP' existe na linha e concatena na mensagem a ser exibida.
        if(linha.contains("UP")) {
            exibirLog = exibirLog + linha + "\n";
        }
    }

    // Cria um frame.
    JFrame frame = new JFrame();

    // Exibe a mensagem de log num diálogo.
    JOptionPane.showMessageDialog(frame, "Msg encontrada na linha: \n" + linha + "\n");

    // Fecha o scanner.
    scanner.close();
}

Não está exibindo o conteudo do arquivo.

Arthur_F_Ferreira

Substitui “linha” por “exibirLog” na linha 26

G

Substitui mas não mostrou o conteudo da linha.

Arthur_F_Ferreira

Cola aqui o seu código.

Criado 25 de janeiro de 2013
Ultima resposta 29 de jan. de 2013
Respostas 37
Participantes 5