Página Inicial do Fórum > Java Básico

Consistência de um arquivo


Goto page 1


New Topic    Reply Message


  1. jonathancba
    Offline
    Posts: 5

    Comment Arrow

    Publicado em: 26/06/2012 11:18:47

    Preciso da seguinte ajuda: tenho um arquivo txt com diversos valores...
    Exemplo :

    A|2.00|NFe|
    B|43||DEVOLUCAO DE VENDA P/SUBST.TRI|0|55|0|2642|2012-03-07|2012-03-07||0|4304606|1|1||1|0|1||||
    C|CASA DA CONSTRUCAO GUAIBA LTDA|CASA CONSTR|0580097099||||3|
    C02|03705494000106|

    no inicio de cada linha temos uma letra, e cada letra corresponde a determinada parte de uma nota fiscal. ex: Letra A - atributos da nf-e, B- Identificadores da nf-e e por aí vai. Eu preciso ler cada letra e os valores que estão entre os PIPES ||, se um desses pipes estiver preenchido com o valor incorreto ou não estiver preenchido e este preenchimento for obrigatório que ele me mostre o pipe que está errado... porém eu não sei como leio pipe por pipe. Conforme a leitura é feita eu quero ir adicionando cada valor a uma variavel para depois dizer se o valor tal do campo tal está certo e se não estiver mostrar onde está errado!

    preciso de uma luz se alguem puder me ajudar... Nao quero que me deem o código pronto, quero apenas aprender como fazer esta leitura.
    Obrigado desde já!




  1. D3z40
    Offline
    Posts: 480

    Comment Arrow

    Publicado em: 26/06/2012 11:59:51

    jonathancba:
    Preciso da seguinte ajuda: tenho um arquivo txt com diversos valores...
    Exemplo :

    A|2.00|NFe|
    B|43||DEVOLUCAO DE VENDA P/SUBST.TRI|0|55|0|2642|2012-03-07|2012-03-07||0|4304606|1|1||1|0|1||||
    C|CASA DA CONSTRUCAO GUAIBA LTDA|CASA CONSTR|0580097099||||3|
    C02|03705494000106|

    no inicio de cada linha temos uma letra, e cada letra corresponde a determinada parte de uma nota fiscal. ex: Letra A - atributos da nf-e, B- Identificadores da nf-e e por aí vai. Eu preciso ler cada letra e os valores que estão entre os PIPES ||, se um desses pipes estiver preenchido com o valor incorreto ou não estiver preenchido e este preenchimento for obrigatório que ele me mostre o pipe que está errado... porém eu não sei como leio pipe por pipe. Conforme a leitura é feita eu quero ir adicionando cada valor a uma variavel para depois dizer se o valor tal do campo tal está certo e se não estiver mostrar onde está errado!

    preciso de uma luz se alguem puder me ajudar... Nao quero que me deem o código pronto, quero apenas aprender como fazer esta leitura.
    Obrigado desde já!



    Cria uma classe NotaFiscal com todos atributos que serão usados em cada arquivo, faça a leitura do arquivo linha a linha (Aqui mesmo no forum tem varios exemplos de leitura de arquivo), faça uma validação com um IF, de acordo com cada letra chame um metodo previamente criado que ficara encarregado de receber um array e ira settar os atributos com esses valores, esse array saira do metodo .split("|").

    Para cada linha do arquivo vc usara este metodo que separa a String em um array, cada indice ficara o espaço entre um pipe a outro.

    No mesmo metodo que setta os valores, devera fverificar se o valor é igual a "", caso sim retorne a informação de qual variavel esta faltando...

    Vc ja tentou algo??? posta ai, fica mais facil de entender!!!
    _________________
    O melhor lugar para se esconder um cadáver, é na segunda página do Google.




  1. jonathancba
    Offline
    Posts: 5

    Comment Arrow

    Publicado em: 26/06/2012 13:52:04

    Ainda nao comecei eu vo desenvolve esse projeto na base da pesquisa porque eu sei só o basicão, dei uma lida a respeito do split aqui no fórum mesmo e vou começar a fazer hoje, assim que tiver algo pronto ou alguma dúvida vou postando!

    Muito Obrigado!




  1. jonathancba
    Offline
    Posts: 5

    Comment Arrow

    Publicado em: 26/06/2012 17:44:31


    Essa foi a situação que usei para ler, eu teria que ter atributos de A-Z para receber cada linha, isso? E a minha variavel linha teria que ser criada usando o String.split() pra tornar ela um array?

    Obrigado!


    Advertência em 27/06/2012 05:36:59 por simu:

    Use sempre as tags code para marcar códigos. Exemplo:
      
      [code]
        public static void main ...
      [/code]
    
    Por favor, edite a sua mensagem.






  1. D3z40
    Offline
    Posts: 480

    Comment Arrow

    Publicado em: 26/06/2012 18:08:30

    jonathancba:
    String linha;
    try {
    BufferedReader leitor = new BufferedReader(new FileReader("c:\\teste.txt"));

    while((linha = leitor.readLine())!= null)
    {
    System.out.println(linha);
    }
    } catch (FileNotFoundException ex) {
    } catch (IOException e) {
    }
    }
    }

    Essa foi a situação que usei para ler, eu teria que ter atributos de A-Z para receber cada linha, isso? E a minha variavel linha teria que ser criada usando o String.split() pra tornar ela um array?

    Obrigado!



    Não nessariamente, vc pode ter apenas uma array que receba os valores dessa linha atraves do metodo split(), settar os campos com os valores de cada indice, e cada loop sobrepor esse mesmo array, não precisa criar inumeras variaveis para infitas linhas do arquivo, é só vc usar os valores logo em seguida e indo sobrepondo... ficou claro???
    _________________
    O melhor lugar para se esconder um cadáver, é na segunda página do Google.




  1. jonathancba
    Offline
    Posts: 5

    Comment Arrow

    Publicado em: 27/06/2012 14:36:54



    No exemplo acima eu queria que imprimisse somente a primeira linha e imprimi a primeira letra de cada coluna ao invés da primeira linha da nota;

    eu coloquei o número [1] no array para a impressão da primeira linha, mas a minha intensão seria usar uma variável i=0 e a cada loop usar i++ para pular linha por linha. Está certo eu usar o while? ou uso o for?

    Obrigado!




  1. D3z40
    Offline
    Posts: 480

    Comment Arrow

    Publicado em: 27/06/2012 17:09:54

    jonathancba:


    No exemplo acima eu queria que imprimisse somente a primeira linha e imprimi a primeira letra de cada coluna ao invés da primeira linha da nota;

    eu coloquei o número [1] no array para a impressão da primeira linha, mas a minha intensão seria usar uma variável i=0 e a cada loop usar i++ para pular linha por linha. Está certo eu usar o while? ou uso o for?

    Obrigado!



    Nossa, desculpe-me, mas não entendi nada agora... vc quer pegar a primeira coluna de cada linha que é onde a letra esta??? se for isso é so trocar o 1 pelo 0, não precisa usar o uma variavel não para isso, sempre será no indice 0.

    Ficou muito confuso, tente explicar melhor sua duvida.
    _________________
    O melhor lugar para se esconder um cadáver, é na segunda página do Google.




  1. chuyun
    Offline
    Posts: 2

    Comment Arrow

    Publicado em: 03/07/2012 09:43:11

    Para cada linha do arquivo vc usara este metodo que separa a String em um array, cada indice ficara o espaço entre um pipe a outro.

    _________________
    Banido (g.gif)




  1. jonathancba
    Offline
    Posts: 5

    Comment Arrow

    Publicado em: 16/07/2012 11:15:04

    A primeira linha seria A|2.00|NFe|
    segunda linha B|43||COMPRA P/ COMERCIALIZACAO|0|55|0|2534|2012-03-06|2012-03-06||0|4314902|1|1||2|1|0|2.0.5|||

    eu gostaria que fossem impressas como acima, mas com o código que postei antes a impressão sai da seguinte forma:
    1º linha A|
    2º linha B|

    Outra coisa que não ficou muito clara pra mim é a forma que eu vou dizer que entre PIPES || eu tenho que ter o seguinte valor, sendo que na mesma linha eu tenho diversos pipes... uso o split pra armazenar os valores de cada pipe? ou armazeno a linha em um split e valido os valores de outra forma?

    Desculpa a demora e obrigado pela ajuda!




  1. D3z40
    Offline
    Posts: 480

    Comment Arrow

    Publicado em: 16/07/2012 11:26:27

    jonathancba:
    A primeira linha seria A|2.00|NFe|
    segunda linha B|43||COMPRA P/ COMERCIALIZACAO|0|55|0|2534|2012-03-06|2012-03-06||0|4314902|1|1||2|1|0|2.0.5|||

    eu gostaria que fossem impressas como acima, mas com o código que postei antes a impressão sai da seguinte forma:
    1º linha A|
    2º linha B|

    Outra coisa que não ficou muito clara pra mim é a forma que eu vou dizer que entre PIPES || eu tenho que ter o seguinte valor, sendo que na mesma linha eu tenho diversos pipes... uso o split pra armazenar os valores de cada pipe? ou armazeno a linha em um split e valido os valores de outra forma?

    Desculpa a demora e obrigado pela ajuda!



    O split("|") retornara um array de String com valores entre Pipes, Vc terá que validar indice por indice do array e lançar uma exceção caso haja algum valor invalido, ou dar continuidade caso o valor esteja correto, para isto não tem como usar um while ou for, pois cada indice tem um valor valido.
    _________________
    O melhor lugar para se esconder um cadáver, é na segunda página do Google.




  1. Relacionados





New Topic    Reply Message     Forum Main Page -> Java Básico


Goto page 1