o valor existe, não esta zerado.
o arquivo csv tem 3559 linhas, ele importa até a linha 1764 e para com o erro.
seque código
o erro é na linha " pln0048r.setPick(valores[3]);"
publicvoidcsv(){Patha=Paths.get("K:\\arquivo\\0048.csv");booleanexists=Files.exists(a);booleannotExists=Files.notExists(a);if(exists){System.out.println("File exists!");System.out.println("executando");Pln0048rpln0048r=newPln0048r();Pln0048rJpaDAO.getInstance().removeAll();System.out.println("excluir pln0048r");FilearquivoCSV=newFile("K:\\arquivo\\0048.csv");try{Stringlinha=newString();Scannerscan=newScanner(arquivoCSV);scan.nextLine();System.out.println(arquivoCSV);System.out.println("inserindo");while(scan.hasNext()){linha=scan.nextLine();String[]valores=linha.split(";");if(valores[0].length()>0){pln0048r.setCd(valores[0]);pln0048r.setConferente(valores[1]);pln0048r.setNome(valores[2]);pln0048r.setPick(valores[3]);pln0048r.setVolume(valores[4]);pln0048r.setCliente(valores[5]);pln0048r.setRazao(valores[6]);pln0048r.setRota(valores[7]);pln0048r.setRoteiro(valores[8]);pln0048r.setData(valores[9]);pln0048r.setEstacao(valores[10]);pln0048r.setProduto(valores[11]);pln0048r.setDescricao(valores[12]);pln0048r.setLote(valores[13]);pln0048r.setValidade(valores[14]);pln0048r.setQtd(valores[15]);Pln0048rJpaDAO.getInstance().merge(pln0048r);System.out.println(valores[3]+valores[4]);// linha = scan.nextLine();}}scan.close();arquivoCSV.delete();System.out.println("fim da importação");}catch(Exceptione){e.printStackTrace();}}elseif(notExists){System.out.println("File doesn't exist!");}}
Você está tentando acessar a posição 3 do array, mas ele só tem 3 posições: 0, 1 e 2.
T
ThiagoNapoleao
ele tem 16 posições… ele importou 1764 linhas ai apareceu o erro… mas aproxima linha tem todas as informações.
staroski
Em algum momento ele só tem 3.
Dá uma depurada.
T
ThiagoNapoleao
staroski
deu um depurar, ele mostrou que não a linha 389 não tem a posição 3, mas a posição existe e tem informção.
nessa posição digitei na mão o valor e rodei novamente, mas na linha 391 acusou que a a posição 15 não existe, mas também existe e tem informação nela…
como faço para quando aparecer esse tipo de erro ela pular a linha e continuar importando?
staroski
A JVM não é burra, se ela diz que não há posição X no array, então não há.
Não olhe no arquivo, olhe o conteúdo do seu array:
ele esta retornando que não existe a posição…
só uma duvida, se o meu arquivo esta completo, como o java retornando posição inexistente.
é o codigo que digitei errado?
staroski
Manda imprimir também a linha, antes de fazer o split.
Posta aqui o valor da linha que não contém todas as posições.
T
ThiagoNapoleao
staroski
linha = “SPI;14600710;LUCIANA MUZEL ; 439.425; 5;W15542;DROGAL FARMACEUTICA LTDA ;766;051;12/07/2018; 8; 706092;EUCERIN GEL OIL CONTR FPS60 52; ; ; 12”
posição 0 = SPI
posição 1 = 14600710
posição 2 = LUCIANA MUZEL
posição 3 = 439.425
posição 4 = 5
posição 5 = W15542
posição 6 = DROGAL FARMACEUTICA LTDA
posição 7 = 766
posição 8 = 051
posição 9 = 12/07/2018
posição 10 = 8
posição 11 = 706092
posição 12 = EUCERIN GEL OIL CONTR FPS60 52
posição 13 =
posição 14 =
posição 15 = 12
linha = "SPI;00404587;GRACE VALERETTO CAPELOSSA "
posição 0 = SPI
posição 1 = 00404587
posição 2 = GRACE VALERETTO CAPELOSSA
fim da importação
Se você observar a linha "SPI;00404587;GRACE VALERETTO CAPELOSSA " realmente só possui 3 campos separados por ; então não tem como acessar mais.
Imagens do arquivo não ajudam, pois não dá pra copiar o conteúdo.
De qualquer forma, na imagem postada nem aparece a linha que você tem problema: "SPI;00404587;GRACE VALERETTO CAPELOSSA "
Utilize este método e veja o que será impresso na saída:
publicvoidcsv(){FilearquivoCSV=newFile("K:\\arquivo\\0048.csv");System.out.println("Importando arquivo: \""+arquivoCSV.getAbsolutePath()+"\"");if(arquivoCSV.exists()){Pln0048rJpaDAOpln0048rJpaDAO=Pln0048rJpaDAO.getInstance();pln0048rJpaDAO.removeAll();try{BufferedReaderreader=newBufferedReader(newFileReader(arquivoCSV));reader.readLine();// ignorar 1ª linhaStringlinha=null;while((linha=reader.readLine())!=null){String[]campos=linha.split(";");System.out.println("Campos da linha \""+linha+"\" {");for(inti=0;i<campos.length;i++){System.out.println(" "+i+": \""+campos[i]+"\"");}System.out.println("}");Pln0048rpln0048r=newPln0048r();pln0048r.setCd(campos[0]);pln0048r.setConferente(campos[1]);pln0048r.setNome(campos[2]);pln0048r.setPick(campos[3]);pln0048r.setVolume(campos[4]);pln0048r.setCliente(campos[5]);pln0048r.setRazao(campos[6]);pln0048r.setRota(campos[7]);pln0048r.setRoteiro(campos[8]);pln0048r.setData(campos[9]);pln0048r.setEstacao(campos[10]);pln0048r.setProduto(campos[11]);pln0048r.setDescricao(campos[12]);pln0048r.setLote(campos[13]);pln0048r.setValidade(campos[14]);pln0048r.setQtd(campos[15]);pln0048rJpaDAO.merge(pln0048r);}reader.close();arquivoCSV.delete();System.out.println("Fim da importação");}catch(Exceptione){e.printStackTrace();}}else{System.out.println("Arquivo não existe");}}
T
ThiagoNapoleao
Não esta aparecendo a linha que você tem problema: "SPI;00404587;GRACE VALERETTO CAPELOSSA "
pois é outro arquivo e agora ela para na "SPI;00400096; “AGATA NAYARA MARONI”.
é o mesmo erro.
T
ThiagoNapoleao
show…
importou corretamente… Resolveu o problema… muito obrigado pela ajuda… vlwwwwwwwwww