Arquivo .txt

3 respostas
B

Oi a todos.

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?

Valew…

3 Respostas

mister_m

Você tem como postar o código exato que está lançando este erro e o stack trace da exceção?

B
private void processaArq(){
    	try {
    		//Abre a conexão com DB
            con = new Conexao("senarc");

            //Lê o arquivo de origem
    		BufferedReader in = new BufferedReader(new FileReader(origem.getText()));
    		String str;
    		
    		//Grava tabela destino conforme o tipo
    		while ((str = in.readLine()) != null) {
    			switch(tabela.getSelectedIndex()){
    			case 0: 
    				gravaLocalidade(str);
    				break;
    			case 1: 
    				gravaMatriz(str);
    				break;
    			case 2: 
    				gravaPlanoFixo(str);
    				break;
    			}
    		}
    		
    		}
    		in.close();
    		con.fechaConexao();
    	} 
    	catch (IOException e) {
    	}
    }



 private void gravaPlanoFixo(String lin){
    	StringBuffer xx = new StringBuffer(lin);
    	if(xx.length() != 182){
    		System.out.println(xx.toString());
			for(int i=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 (SQLException e){
            new Mensagem(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.

Criado 24 de abril de 2005
Ultima resposta 24 de abr. de 2005
Respostas 3
Participantes 2