Jump to content
rtavix

Problema para lê o próximo arquivo

Recommended Posts

Pessoal, boa tarde!

 

Estou com problemas para lê os arquivos de um diretório, apresenta erro como se estivesse passando o caminho errado, porém não enxergo essa falha, alguém poderia me orientar?

Aqui é aonde eu verifico a extensão do arquivo e informo o caminho:

 

Método para mover o arquivo:

Método de inserir o log:

 

Erro:

System.IO.FileNotFoundException: 'Não foi possível localizar o arquivo 'D:\Pendrive\PENDENTES\CGc0001.cpv\CGc0360.cpv'.'

Isso acontece que toda vez vou ler o próximo arquivo.

Share this post


Link to post
Share on other sites
Em 14/08/2018 at 08:20, quintelab disse:

Repara no caminho que esta no erro. Imagino que o correto é D:\Pendrive\PENDENTES\CGc0001.cpv e você esta passando D:\Pendrive\PENDENTES\CGc0001.cpv\CGc0360.cpv

Quintelab, alterando o código dessa forma, eu consigo mover o arquivo:

Ao compilar e varrer linha por linha, identifiquei que o problema encontrava- se nesse método:

 

Porque eu passo o nome de um desses arquivos, como eu poderia melhorar o código, que ao invés de passar o nome do arquivo para mover ele, eu pego pela extensão do arquivo, que se chama .cpv, como poderia estar fazendo? Tem alguma ideia?

Share this post


Link to post
Share on other sites

Aqui tem um pequeno exemplo:

private void mover()
    {
      DirectoryInfo dir = new DirectoryInfo(@"C:\retorno");
      string destino = @"C:\entrada\";

      foreach (FileInfo f in dir.GetFiles("*.txt"))
      {
        File.Move(f.FullName, destino + f.Name );
      }
    }

Pega todos os arquivos com extensão txt da pasta retorno e joga na pasta destino.

Share this post


Link to post
Share on other sites
13 horas atrás, quintelab disse:

Aqui tem um pequeno exemplo:


private void mover()
    {
      DirectoryInfo dir = new DirectoryInfo(@"C:\retorno");
      string destino = @"C:\entrada\";

      foreach (FileInfo f in dir.GetFiles("*.txt"))
      {
        File.Move(f.FullName, destino + f.Name );
      }
    }

Pega todos os arquivos com extensão txt da pasta retorno e joga na pasta destino.

Implementei sua sugestão quintelab, mas ao depurar ele informa que não foi possivel encontrar o arquivo x . cpv, e ao verificar ele move até os arquivos que não podem ser movidos. 

 

Se eu tenho um comprovante com o código de barras e ao verificar no banco se ele existe na tabela proc_inter, ele me retorna que não existe, então não pode ser inserido. Já os demais que existem no banco, ai ele insere, registra o log, e como um determinado código de barras não existe lá no banco, eu pego esse arquivo e deixo ele na pasta pendente ainda, até que os responsáveis verificam por qual motivo ele não foi cadastrado nessa tabela. Resumidamente é isso, porém ao usar sua sugestão amigo ele retorna essa mensagem :/

Share this post


Link to post
Share on other sites

Quintelab, uma dúvida, se meu arquivo .cpv que possui um determinado código de barras não existir na tabela sdpj_proc_inter no banco de dados, eu retorno um log informando esse ocorrido, mas eu iria precisar de mover esse arquivo para uma pasta processados com pendnecia, como eu poderia fazer essa condição? Esse método aqui:

Serve para mover arquivos .cpv que possuem os códigos de barras cadastrados na tabela sdpj_proc_Inter, mas como eu poderia está fazendo para a condição exposta logo acima? 

Share this post


Link to post
Share on other sites
Em 30/08/2018 at 05:20, quintelab disse:

Primeira pergunta é: cp,p vpce sabe se um arquivo possue códigos de barras cadastrados na tabela sdpj_proc_Inter ?

cada arquivo possui a extensão cpv. Esse arquivo é gerado pelo banco, porém existe determinados arquivos que vem com um código de barras que não existe nessa tabela do banco, eu sei disso porque eu fiz a lógica que verifica se existe ou não, no caso seria essa parte do código que eu faço isso:

 

Share this post


Link to post
Share on other sites
Em 30/08/2018 at 05:20, quintelab disse:

Primeira pergunta é: cp,p vpce sabe se um arquivo possue códigos de barras cadastrados na tabela sdpj_proc_Inter ?

Aqui é aonde verifico se possui o código de barras na tabela do banco:

Desculpa por esta postando em partes, mas para não ficar uma coisa "bagunçada" Quintelab, aguardo teu retorno. Valeu até o momento amigo!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Darwin Osi
      Estou com o Visual Studio 2013 instalado sob o Windows 10. Quando tento abrir o primeiro projeto do livro supracitado, chamado Music Trivia, o Visual Studio 2013 montra na janela Solution Express a mensagem:
       
      > Solution 'Music Trivia' (0 projects)
          > Music Trivia (Windows 8.1 required)
              > This computer must be upgraded to Windows 8.1 to load this project.
       
      Como resolver isso e carregar esse e os outros projetos do livro? Desde já agradeço qualquer ajuda.
    • By lsramos
      Tenho um DataGridView que exibe uma tabela do banco de dados. Até aí tudo bem :)
      A questão é que o cabeçalho (primeira linha do DataGrid) traz o nome das colunas da tabela do banco (exemplo: matricula, nome, data_nascimento, etc).
      Eu queria saber se é possível, até para melhor visualização, que eu personalizasse esse cabeçalho sem alterar do banco.
      Algo como inserir no DataGrid o nome das colunas e exportar do banco de dados sem o nome da coluna.
    • By eduarda_dasilveira
      O sistema deverá, utilizando a linguagem C, receber 6 apostas (6 números cada
      aposta no intervalo de 1 a 60) e armazenar estas informações em uma matriz quadrada de
      ordem 6. Um vetor chamado vetGabarito  deve armazenar 6 números, que são os gabaritos
      da aposta.
      Com a matriz de apostas preenchidas, o sistema deverá:
      a. Mostrar a soma da diagonal principal da matriz de apostas.
      b. Transferir todas as apostas para vetores de inteiros de 6 posições.
      c. Indicar quantos números pares e ímpares foram apostados.
      d. Indicar quantos acertos o jogador obteve para cada conjunto de aposta.
       
      Estou com dificuldade de fazer letra d.
      Meu código esta ai mas esta dando erro (mostrando a quantidade errada de acertos) na parte da letra d.
      #include <stdio.h> #include <time.h> #include <conio.h> #include <stdlib.h> int main (void){ int mat [6][6], vetGabarito[6], vet1[6], vet2[6], vet3[6], vet4[6], vet5[6], vet6[6], l, c, soma_diagonal=0, impar=0, par=0; srand (time (NULL)); for (l=0; l<6; l++){ for (c=0; c<6; c++){ printf ("Digite a sua aposta de 1 a 60:"); scanf ("%d", &mat [l][c]); } } for (l=0; l<6; l++){ for (c=0; c<6; c++){ printf (" %d", mat [l][c]); } printf ("\n"); } for (l=0; l<6; l++){ for (c=0; c<6; c++){ if (l==c){ soma_diagonal=soma_diagonal+mat[l][c]; } } } for (c=0; c<6; c++){ vet1[c]= mat [0][c]; vet2[c]= mat [1][c]; vet3[c]= mat [2][c]; vet4[c]= mat [3][c]; vet5[c]= mat [4][c]; vet6[c]= mat [5][c]; printf ("Apostas do jogador na rodada [%d] e %d\n", c, vet1[c]); printf ("Apostas do jogador na rodada [%d] e %d\n", c, vet2[c]); printf ("Apostas do jogador na rodada [%d] e %d\n", c, vet3[c]); printf ("Apostas do jogador na rodada [%d] e %d\n", c, vet4[c]); printf ("Apostas do jogador na rodada [%d] e %d\n", c, vet5[c]); printf ("Aposta do jogador na rodada [%d] e %d\n", c, vet6[c]); } for (l=0; l<6; l++){ for (c=0; c<6; c++){ if ((mat[l][c]%2)==0){ par++; } else { impar++; } } } srand (time (NULL)); for (c=0;c<6;c++){ vetGabarito[c]=rand()%10; } for (c=0; c<6; c++){ printf (" %d", vetGabarito[c]); printf ("\n"); } for (c=0; c<6; c++){ vet1[0]==vetGabarito[c]; vet2[1]==vetGabarito[c]; vet3[2]==vetGabarito[c]; vet4[3]==vetGabarito[c]; vet5[4]==vetGabarito[c]; vet6[5]==vetGabarito[c]; } printf ("A soma da diagonal da matriz e: %d\n", soma_diagonal); printf ("A quantidade de numeros pares foi %d, e de numeros impares foi %d\n", par, impar); printf ("O jogador na primeira rodada teve %d de acertos.\n", vet1[0]); printf ("O jogador na segunda rodada teve %d de acertos.\n", vet2[1]); printf ("O jogador na terceira rodada teve %d de acertos.\n", vet3[2]); printf ("O jogador na quarta rodada teve %d de acertos.\n", vet4[3]); printf ("O jogador na quinta rodada teve %d de acertos.\n", vet5[4]); printf ("O jogador na sexta rodada teve %d de acertos.\n", vet6[5]); return 0; }  
    • By Davi DEVV
      Faça um algoritmo que (utilize funções com ponteiros):
      - Tenha um menu que permita entrar nas funções inserir e buscar, ao selecionar a função inserir, insira somente um funcionário por vez, voltando ao menu principal.
      - Tenha uma estrutura para armazenar, nome, número do cartão e setor de um funcionário.
      - Armazene 10 funcionários.
      - Permita buscar os dados de um funcionário através do número do cartão.
    • By lulicanunes
      - Escreva o programa em linguagem C - É permitido o uso do CodeBlocks - Envie o arquivo, no local apropriado Descrição. Faça um programa em C que calcule o imposto de renda para um conjunto de 5 pessoas (contribuintes). Os dados de cada pessoa devem ser manipulados através de uma estrutura que contém os campos para o nome (string), sobrenome (string), salário mensal (float), deduções (float) e saldo (float). A leitura será feita através de um arquivo texto contendo informações referentes aos três primeiros campos da estrutura. Ao final, o saldo de cada contribuinte deve ser exibido na tela junto com seu nome e sobrenome. OBS.: As instruções a seguir implementam a lógica para resolver esse problema.
      Instruções. 1.
      (1,0) Defina a estrutura para armazenar os dados dos contribuintes.
      2. (1,0) Declare um vetor de estruturas com 5 posições.
      3. (3,0) Faça a leitura dos dados do arquivo de entrada, armazenando-os nas respectivas posições do vetor criado.
      OBS.: Assuma que o arquivo de entrada tem o nome "imposto.txt" e que cada registro (ou linha) desse arquivo tem o formato "%s\t%s\t%f\t%f\n" (i.e., os dados estão separados pelo caractere TAB - "\t").
      Exemplos de possíveis registros do arquivo de entrada:
      Pedro      Silva      2200.00      980.00
      Paulo      Santos    5400.00     2230.00
       
      (3,0) Após concluir a leitura dos dados, crie uma função que será chamada somente uma vez e que receba o vetor de structs e, a partir das informações de salário e deduções, calcule o saldo (imposto devido ou restituição) a ser pago para cada pessoa de acordo com a seguinte fórmula Saldo = Deduções - (12 * Salário mensal * Alíquota)
      O valor da alíquota depende do salário mensal de cada pessoa, com a seguinte divisão:
       
      Salário Mensal                                           Alíquota
      Abaixo de R$ 2.826                                      0.075                            
      De R$ 2.826 até R$ 4.664                            0.225
      Acima de R$ 4.664                                        0.275
       
      (2,0) Imprima na tela um relatório contendo o nome, o sobrenome e o saldo de todos os contribuintes. Exemplo de execução. Resultado considerando o arquivo de entrada fornecido. Nome: João
      Sobrenome: Silva
      Saldo: 9820.00
       
      Nome: Osvaldo
      Sobrenome: Aranha
      Saldo: 6480.00
       
      Nome: Pedro
      Sobrenome: Alves
      Saldo: 4542.00
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.