[RESOLVIDO] Leitura de txt não vai até o final

7 respostas Resolvido
java
A

Fiz um simples código em java para substituir alguns valores do txt se ceras condições forem encontradas entretanto a leitura para na metade do arquivo sem nenhum erro aparente.
Por exemplo tenho uma arquivo com 9000 linhas mas meu arquivo final fica com somente 2137

Segue o código que eu usei.

try {
                BufferedReader readerCom = new BufferedReader(new InputStreamReader(new FileInputStream(arquivos[j].getAbsolutePath()), "ISO-8859-1"));
                FileWriter o = new FileWriter("c:\\Integração via banco\\final\\" + arquivos[j].getName() + ".txt");
                BufferedReader Buffered = new BufferedReader(readerCom);
                PrintWriter out = new PrintWriter(o);

                while ((linha = Buffered.readLine()) != null) {
                    try{
                    tipLinha = this.getString1(linha, 1, 2);
                    cfop = this.getString1(linha, 11, 12);
                    }catch (Exception es){
                        System.out.println(es);
                    }
                    try {
                        if (tipLinha.equals("C170") || tipLinha.equals("C100")) {
                            if (tipLinha.equals("C170") && ((cfop.equals("5933")) || cfop.equals("6933"))) {
                                linha = linha.replace("C170", "A170");
                                out.println(linha);
                            }

                            if (tipLinha.equals("C100") && ((cfop.equals("5933")) || cfop.equals("6933"))) {
                                linha = linha.replace("C100", "A100");
                                out.println(linha);
                            }
                        } else {
                            out.println(linha);
                        }
                    } catch (Exception e) {
                        System.out.println(e);
                    }

                }
                out.flush();
                readerCom.close();
                o.close();
            } catch (Exception x) {

                x.printStackTrace();
            }
        }

Alguém tem ideia do que pode ser?

7 Respostas

R

não dá erro?
é só em um arquivo ou todos?
se tirar tudo de dentro do laço e só printar a linha, vai até o final?
já debugou?

A

Sim se tirar tudo do laço escreve até o final
são todos os arquivos que estão com o mesmo problema.
já fiz o debug mas não dá erro nenhum.

R

No debug vc resolve problemas de lógica, raramente erros.

Então seu problema é de lógica com seus IFs.

A

ok criei um arquivo de teste com 10 mil linhas e foi corretamente.
acho que o problema é com a codificação dos arquivos que estou usando.
eles são txt’s com algumas partes codificadas.
ex:

|9900|P990|1|
|9900|1001|1|
|9900|1300|1|
|9900|1700|1|
|9900|1990|1|
|9900|9001|1|
|9900|9990|1|
|9900|9999|1|
|9900|9900|38|
|9990|41|
|9999|8967|
SBRCAAEPDR0	*H†÷
a 010	+ 0	*H†÷
a $ÄO¬û )l±p80Fé³6@ù       0‚`0H 0
	*H†÷

 0—10	UBR10U

ICP-Brasil1=0;U4Instituto Nacional de Tecnologia da Informacao - ITI1402U+Autoridade Certificadora Raiz Brasileira v20
111021121629Z
211021121629Z010	UBR10U

ICP-Brasil1402U+Autoridade Certificadora Raiz Brasileira v21604U-AC Secretaria da Receita Federal do Brasil v30"0
	*H†÷
  0
 Ár´ÂüNG]5ˆ^=nW@I)eëí¢ñ+4ô~eƒSé 
?lQØÔüŽíJ¦®ŒžÍmfk(Ý\ÜiÁÒÝ~gjÿ#èð$~ûIŸ¢ˆûõHò$±y7¼æ<à?LÚfOçÈ@yŒÔ°2rM½¼Ú÷m^ œ4ÒH»ì,íž³Õ¨·AuÞP«Vm
D±ãÚY\‚î»´ìY„£Ym-è[œUB üØÈÀF:,ÛT	¦FjöÃÚÅÖædÊU-n~0ak#æK}+ar8
*]¨U}jÐqö¨‰¯-²^Åëyi­¤CÕAìläQá6OŠlJÊSüüC|êíë<Žç²bgè{ŒV^wÊ6êOîkkQÂß
ð÷üb(–ÓÁŒ±ú¼HšGi½b³¼œ2ýÈVäDu>ÖPì±ÙÕ
´­¥ä@11óëGµÈš¾J±ÊJQ]x=9Ä\ȍ)a¸9¹¥÷Á_EOg¯e'Xáqu­­œåÑCŠïO¾'Þè}^£9¬Ï¡q3D®ðéñØhØåyéj4+zï4Ï.¯?V7ÃÖþ¶°«$Õµ¿@µÂlmÿýž8ÕÔb÷¹½ã3b!kiÛ £»0¸0Uu˺ÑÎL§’ðq°Ë¾¸{3²(0Uÿ0ÿ0Uÿ0U 
00	`L0 0?U80604 2 0.http://acraiz.icpbrasil.gov.br/LCRacraizv2.crl0U#0€9 :·Ë×(}A ÇúJ­2$¾0
	*H†÷

  ‰‰©…8ÔÙA¸é*~	gŸz)e¤Ö§¼áý÷jÿZ
߯šèZyèÜf9Sü
> ˆ³+i KÖJ½õ.E§„%ªÝY²n\ ?pg)iîÍey´£íxŽéêEàäxeJÓˆá|>u›b+3Ê~SâÛá±\Ž‹§ªõ4|®ŸäÖxÛ
@Q¤’з»Žû–¬1;âþ~ç±½oÇb}..Œú]2W-ƒŒ&èÑÓp4ð/œ2L¥àoijL9ïñ
àpMÐÌuZ²ûèÅ%Zn³q§M3ôËÔnlˆ$~4ä|9|¼
­èŠ”¦ÖÞ/üˆlá ­ 2Ù¹íÐ×dsZ)˰
äùñDMc?%XIíQí§†þ6ú-ù V¥Ä˜:·£¤ŸÐ ]_Fg[ѽ~"×€çðÜÅ[ç¾ðp_ôèSνªb”óù»í¦›ŠpYí®
sÞÜ0qæ	/,XŸ0¨ïfºËÇéÍoè³söÎÒ
a]œ`	)þgš²˜1Øß~-a<ù!£8bäêÿ[ª ea,kHG(¼¸W~!(;eØæÿiMð`ä<_ôÐ%ÎàìÊÅë¹Q!)˜0ñ0Ù 0
	*H†÷

Como posso tratar isso?

R

tmq ler na codificação correta.
Este mais me parece criptografado do q com problema de codificação.

A

eu já tinha adicionado no código a codificação ISO-8859-1
tem alguma forma de ele copiar essa parte criptografada da mesma forma?

A
Solucao aceita

o problema era na lógica dos if’s mesmo para quem se interessar ele ficou assim.

if ((tipLinha.equals("C170") || tipLinha.equals("C100")) && ((cfop.equals("5933") || cfop.equals("6933")))) {
                            if (tipLinha.equals("C170") && ((cfop.equals("5933")) || cfop.equals("6933"))) {
                                linha = linha.replace("C170", "A170");
                                out.println(linha);
                            }

                            if (tipLinha.equals("C100") && ((cfop.equals("5933")) || cfop.equals("6933"))) {
                                linha = linha.replace("C100", "A100");
                                out.println(linha);
                            }
                        } else {
                            out.println(linha);
Criado 5 de julho de 2018
Ultima resposta 5 de jul. de 2018
Respostas 7
Participantes 2