Arquivo .txt (AJUDA PELO AMOR DE DEUS)

17 respostas
javolatra

Amigos, Boa tarde!

Eu estou com dificuldade de trabalhar com um arquivo de texto.
É o seguite, eu preciso que minha aplicação leia um arquivo .txt, substitua os TABS por virgulas e tudo que estiver antes das virgulas ele coloque em “de preferencia”, um vetor de String strCodigo, para que depois eu possa comparar o tamanho de cada elemento do meu vetor, caso ele tenha 1 caractere eu coloco “0000”, se 2 caractere “000” e assim por diante até 5 carecteres “aí não adciona mais nada”.

Eu não consigo fazer isso!. rsrs

Agradeço qualquer ajuda, abaixo vai meu código, de preferencia, podem modifica-lo, para melhor entendimento.

Obrigado.

private void buttonGerarArquivoMouseClicked(java.awt.event.MouseEvent evt) {                                                   
         
      try{   
          BufferedReader input = new BufferedReader(new FileReader("C:\\Gerador\\HORA300.txt"));   
          try{   
              String line = null;   
              FileWriter arquivo;   
              PrintWriter escrever;   
              String texto = null;   
              String strCodigo = "";   
              String strData;   
              String strHora;   
              String strDoc = null;   
              int cont;   
                 
              arquivo = new FileWriter("C:\\Gerador\\HORASAF.txt");   
              escrever = new PrintWriter(arquivo);   
               line = input.readLine(); // isso mudou
                 
                 
              // enquanto a linha for diferente de nulo   
              while (line != null){   
  
                  // é acresentado 1 a cont até que chegue no final da linha   
                  for (cont = 0; cont < line.length();cont++){   
                       
                      // se o caractere atual for diferente de ,   
                      if (line.charAt(cont) != ','){   
                           
                          // strCodigo recebe ele mesmo mais o caractere atual   
                          strCodigo += line.charAt(cont);   
  
                      }// fim do if   
                  }// fim do for   
  
                  strCodigo += "\n";   
                  line = input.readLine(); // isso tb ta assim
   
              }// fim do while   
                 
              arquivo.append(strCodigo);   
              arquivo.close();   
                 
          }catch(java.io.IOException ioex){   
                 
          }finally{   
              input.close();   
          }   
      }catch (IOException ioe){   
             
      }   
  }

17 Respostas

D

Exatamente o que você não está conseguindo fazer?

maquiavelbona

O “AJUDA PELO AMOR DE DEUS” ( e ainda em letras garrafais ) me dá uma preguiça danada de ler o código.

Leia -> http://guj.com.br/posts/list/26045.java

Até!

G

Manda um trecho do arquivo…

HORASAF.txt

javolatra

HORASAF.txt

10002008-03-31 05:00:00i
1000	2008-03-31 08:00:00		I
1000	2008-03-31 09:00:00		i
12	2008-02-35 18:30:00 
232	2007-03-12 19:30:00		i

Esse é o HORA300.txt

1000         2008-03-31 05:00:00		i
1000         2008-03-31 08:00:00		I
1000         2008-03-31 09:00:00		i
12           2008-02-35 18:30:00 
232          2007-03-12 19:30:00		i

o HORASAF.txt

B

Amigo, de um exemplo de como deve ficar o arquivo de output (escreva a mão). Aí fica mais fácil de nós entendermos.

javolatra

Desculpa, O arquivo deve ficar assim

1000 2008-03-31 05:00
1000 2008-03-31 08:00
1000 2008-03-31 09:00
0012 2008-02-35 18:30
0232 2007-03-12 19:30

T

Para formatar um dado numérico com zeros à esquerda, use String.format. Exemplo:

int x = 12;
String s = String.format ("%04d", x);
// s deve conter agora o valor "0012"

OK?

B

No seu caso deves usar o Scanner para poder pegar separadamente a primeira sequência de caracteres, que é o número que terá uma formatação em particular.

Da uma lida aqui:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html

Estou tomando como base esse arquivo aqui que você postou:

File file = new File("C:\\Gerador\\HORA300.txt");
Scanner scanner = new Scanner(file);

while (scanner.hasNext()) {
  int numero = Integer.parseInt(scanner.next());
  String numeroS = String.format("%04d", numero);
  String data = scanner.next();
  String hora = scanner.next();
  //Descartar o 'i' que está no final. Não entendi se ele está sempre presente ou não.
  arquivo.append(numeroS+" "+data+" "+hora);
}
javolatra
No seu caso deves usar o Scanner para poder pegar separadamente a primeira sequência de caracteres, que é o número que terá uma formatação em particular.

Dessa forma o arquivo é criado em branco!

private void buttonGerarArquivoMouseClicked(java.awt.event.MouseEvent evt) {                                                
      
        String strData = "";
        String strHora = "";
        String strCodigo = "";
        int cont = 0;
        
        
        try{
            BufferedReader input = new BufferedReader(new FileReader("C:\\Gerador\\HORA300.txt"));
            try{
                
                File arquivo;
                PrintWriter escrever;
                arquivo = new File("C:\\Gerador\\HORASAF.txt");
                escrever = new PrintWriter(arquivo);                
                Scanner scanner = new Scanner(arquivo);
                
                while (scanner.hasNext()){
                    int numero = Integer.parseInt(scanner.next());
                    strCodigo = String.format("%04d",numero);
                    strData = scanner.next();
                    strHora = scanner.next();
                    escrever.append(strCodigo+ " "+strData+ " "+ strHora);
                }
                escrever.close();
                
                this.dispose();
                
            }catch(java.io.IOException erro){
                erro.printStackTrace();
            }finally{
                input.close();
            }
        }catch (IOException ioe){
            
        }
    }
B

Amigo, recomendo você ler alguns tutoriais de acesso a arquivos. Existem milhares, só procurar no google.
O scanner é para leitura, você está abrindo o arquivo de saída com ele.

Abraço.

javolatra

Aí, deu certo!

Valeu galera um Abraço a todos.

G

O meu não funcionou... erro ao converte para inteiro por causa do - ...

como resolveram???

String strCodigo = "";
		String strData = "";
		String strHora = "";
		
		try {
			File file = new File("HoraSemFormato.txt");
			Scanner sc = new Scanner(file);
			
			while (sc.hasNext()){
				int numero = Integer.parseInt(sc.next());   
                strCodigo = String.format("%04d",numero);    
                strData = sc.next();   
                strHora = sc.next();   
                System.out.println((strCodigo+" "+strData+" "+strHora));
				//System.out.println(sc.next());
			}

Exception in thread "main" java.lang.NumberFormatException: For input string: "10002008-03-31"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at br.gquelhos.formatador.Formatador.main(Formatador.java:20)

G

Alguem me ajuda!!!

por favor, queria entender o porque do erro!!!

Z

Ué,
o erro é q vc ta querendo converter pra inteiro uma String que não é possível.
Seu arquivo txt tem que ser no mesmo padrão do outro cara ai…
valeu…

G

E esta no msm padrão…

Nao sei como o dele fuincionou… o que percebi, ele dá erro no ‘-’ do arquivo…

Z

o código que vc postou funciona pro HORA300.TXT do cara.
pro HORAF.TXT não funciona.
é só vc adaptar pro seu jeito.

G

Ah ja entendi… eu pensei q o código resolvi totalmente o problema do cara lá… mas não…

int numero = Integer.parseInt(sc.next()); strCodigo = String.format("%04d",numero); strData = sc.next(); strHora = sc.next(); System.out.println(strCodigo+ " "+strData+ " "+ strHora);

e o arquivo deve ser assim:

1000 2008-03-31 05:00:00
1000 2008-03-31 08:00:00
1000 2008-03-31 09:00:00
12 2008-02-35 18:30:00
232 2007-03-12 19:30:00

Vlw!!!

Criado 4 de abril de 2008
Ultima resposta 8 de abr. de 2008
Respostas 17
Participantes 7