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
Use Linha.substring (coluna inicial, 1 + colunafinal), em vez de split. É um saco mas funciona direitinho.
Não sei como usar, vc teria alguma codigo para me mostrar
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.
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.