Estou tendo um problema meio que bizarro para ler um arquivo .txt.
Cada linha tem 182 posições. Se tento pegar um substring(6,11) por exemplo, ele retorna index out of bounds. Se pegar substring(0,182) ven direitinho! Já fiz n migrações de arquivos desse jeito e nunca de pau. O arquivo txt está em ordem. alguém já viu isso?
Você tem como postar o código exato que está lançando este erro e o stack trace da exceção?
B
bigEdie
privatevoidprocessaArq(){try{//Abre a conexão com DBcon=newConexao("senarc");//Lê o arquivo de origemBufferedReaderin=newBufferedReader(newFileReader(origem.getText()));Stringstr;//Grava tabela destino conforme o tipowhile((str=in.readLine())!=null){switch(tabela.getSelectedIndex()){case0:gravaLocalidade(str);break;case1:gravaMatriz(str);break;case2:gravaPlanoFixo(str);break;}}}in.close();con.fechaConexao();}catch(IOExceptione){}}privatevoidgravaPlanoFixo(Stringlin){StringBufferxx=newStringBuffer(lin);if(xx.length()!=182){System.out.println(xx.toString());for(inti=0;i<182-xx.length();++i){xx.append(" ");}}try{cs=con.getConexao().prepareCall("{call sp_tarifa_localidade(?,?,?,?,?,?,?,?)}");cs.setString(1,xx.substring(6,11));cs.setString(2,xx.substring(2,6));cs.setString(3,xx.substring(0,2));cs.setString(4,xx.substring(11,61));cs.setString(5,xx.substring(61,111));cs.setString(6,xx.substring(111,116));cs.setBoolean(7,converteBoolean(xx.substring(116,119)));cs.setBoolean(8,converteBoolean(xx.substring(119,122)));cs.execute();cs.close();}catch(SQLExceptione){newMensagem(null,"Atualização de localidade",e.toString(),Mensagem.MSG_BOTAO_OK,Mensagem.MSG_ICONE_ERRO_DB);con.fechaConexao();}
mister_m
Parece-me que a sua lógica de padding está errada. Verifique o tamanho de xx após ter saído do for.