Ler arquivo separdo por coluna fix

4 respostas
S

Boa tarde galera, aqui estou com um P problema nos dedos e na mente, tenho um arquivo txt separado por coluna fixa e pensei que fosse por tab. Para ler este por tab estou fazendo assim:

BufferedReader reader = new BufferedReader(new FileReader(c:/destDelimitador.txt));

String Linha;

String dados[];

List lmb = new ArrayList();

ImportarBean mb;

for (int i = 0; ; i++){

Linha = reader.readLine();

if (Linha == null) break;

dados = Linha.split("\t");

mb = new ImportarBean();

mb.setData(dados[0]);

mb.setHora(dados[1]);

mb.setT(dados[2]);

mb.setRamal(dados[3]);

mb.setTronco(dados[4]);

mb.setNDiscado(dados[5]);

mb.setRing(dados[6]);

mb.setDuracao(dados[7]);

mb.setAcctCode(dados[8]);

mb.setCc(dados[9]);
//Adiciona 
            lmb.add(mb);

e por coluna fixa alguém poderia me ajudar.

Esta é estrutura do arquivo que estou lendo:

04/11/08 12:13PM 1 E1245 T10114 27762688 00:00’45

04/11/08 12:13PM 1 E1148 T10107 22908401 00:00’19

04/11/08 12:13PM 1 E1102 T10102 25905483 00:00’57

04/11/08 12:13PM 1 E1077 T20903 0251633353298 00:00’23

Boa galera Obrigado desde já.

Shelter

4 Respostas

T

Use Linha.substring (coluna inicial, 1 + colunafinal), em vez de split. É um saco mas funciona direitinho.

S

Não sei como usar, vc teria alguma codigo para me mostrar

T

Ora, você nunca viu um código com “substring”? Aqui vai um exemplo.

String s = "01234567";
String t = s.substring (2, 5); // ele vai obter a string "234"

Como eu falei, o primeiro parâmetro é a coluna inicial (a primeira coluna é 0), e o segundo parâmetro é a coluna final + 1.

S

Amigo estou muito grato pela ajuda
Aqui estou fazendo desta forma:

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

/**
*

  • @author valmir
    */
    public class Main {

    /** Creates a new instance of Main */
    
    public Main() {
    
    importa();
    
    }
    
    public void importa(){
    
    try {
    
    BufferedReader reader = new BufferedReader(new FileReader(c:/pabx2.txt));
    
    String Linha = reader.readLine();
    
    String dados;
    
    List lmb = new ArrayList();
    
    ImportarBean mb;
    
    for (int i = 0; ; i++){
    
    Linha = reader.readLine();
    
    if (Linha == null) break;
    
    dados = Linha;
    
    mb = new ImportarBean();
    
    mb.setData(dados(0,7));
    
    mb.setHora(dados(8,11));
    
    mb.setT(dados(12,12));
    
    mb.setRamal(dados(13,17));
    
    mb.setTronco(dados(18,23));
    
    mb.setNDiscado(dados(24,37));
    
    mb.setRing(dados(38,41));
    
    mb.setDuracao(dados(42,47));
    
    mb.setCc(dados(48,49));
    
    // mb.setCc(dados[9]);
    
    //Adiciona 
             lmb.add(mb);
           
             
         }
    
    // Gravar no Banco
    
    Class.forName(com.mysql.jdbc.Driver);
    
    Connection con = DriverManager.getConnection(jdbc:mysql://localhost:3306/test,root,1272);
    
    String importar = INSERT INTO IMPORTARTXT VALUES (?,?,?,?,?,?,?,?,?,?);
    
    PreparedStatement ps = con.prepareStatement(importar);
    
    for (int i = 0; i < lmb.size(); i++ ){
         ps.setString(1, lmb.get(i).getData());
         ps.setString(2, lmb.get(i).getHora());
         ps.setString(3, lmb.get(i).getT());
         ps.setString(4, lmb.get(i).getRamal());
         ps.setString(5, lmb.get(i).getTronco());
         ps.setString(6, lmb.get(i).getNDiscado());
         ps.setString(7, lmb.get(i).getRing());
         ps.setString(8, lmb.get(i).getDuracao());
         ps.setString(9, lmb.get(i).getAcctCode());
         ps.setString(10, lmb.get(i).getCc());
         ps.executeUpdate();
                                  
           
         }
          
         con.close();
     } catch (NumberFormatException ex) {
         ex.printStackTrace();
     } catch (FileNotFoundException ex) {
         ex.printStackTrace();
     } catch (SQLException ex) {
         ex.printStackTrace();
     } catch (ClassNotFoundException ex) {
         ex.printStackTrace();
     } catch (IOException ex) {
         ex.printStackTrace();
     }
    

    }

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {
      new Main();
      }
    private String dados(int i, int i0) {
    
    return null;
    
    }
    
    }
    

oq esta acontecendo:
Esta inserindo todos campos como NULL.

Vc pode me ajudar

Obrigado.

Criado 11 de abril de 2008
Ultima resposta 12 de abr. de 2008
Respostas 4
Participantes 2