olá pessoal,
o meu código abaixo lista todos os arquivos numa pasta e depois inicia sua leitura.
O problema é que o java não lê todo os arquivos listados na pasta. São arquivos Xml.
Isolei parte do código original e montei esse para acompanhar passo-a-passo.
Tenho 2.218 xml nessa pasta e o Java completa Leitura de apenas uns 470 as vezes 700.
Nos desvios else e catch só gera os que estão errados, mas somando todos nem chega próximo da quantidade de arquivos que tenho na pasta.
Se alguém puder olhar e ver se existe algum erro na estrutura de progrma, ficarei agradecido.
/**
* @author Eduardo Rodrigues da Silva
* @Classe GravaComplLogXml
* @Version 1.0.0
* @Date 18/02/2013
* @Copyrigth: Copyrigth, EngSoftware - Engenharia e Sistema do Software Ltda. (c) 2013.
*/
package br.com.audfis.customizados;
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
import br.com.audfis.conexao.dao.CusParamDirXML;
import br.com.audfis.conexao.jdbc.ConsCusParamDirXml;
import br.com.audfis.nfe.v200.ObjectFactory;
import br.com.audfis.nfe.v200.TEnviNFe;
public class GravaComplLogXmlNFe
{
public String entrada;
public String validados;
public String rejeitados;
public String excluidos;
public String atualizados;
public String invalidos;
public String processo;
public String moveXml;
public String excluiXml;
public File dirEntrada;
public File dirValidados;
public File dirRej;
public File dirExcluido;
public File dirAtualizados;
public File dirLayoutInvalido;
public String nomeArquivo;
public String caminho;
private boolean flegProcesso = false;
public void gravaComplementoLog(String Obrigacao, int sequence)
{
/*
* Chama a Classe CusDirXml para recuperar
* as pastas de controle dos arquivos Xml.
*/
CusParamDirXML cdx = new CusParamDirXML();
//Cria a Lista
List<ConsCusParamDirXml> lista = cdx.getLista(Obrigacao);
for (ConsCusParamDirXml construtor : lista)
{
entrada = construtor.getDirEntrada();
validados = construtor.getDirArqValidados();
rejeitados = construtor.getDirArqRej();
excluidos = construtor.getDirArqExcluido();
atualizados = construtor.getDirArqAtualizados();
invalidos = construtor.getDirArqLayoutInvalido();
moveXml = construtor.getMoveXML();
excluiXml = construtor.getExcluiXML();
}// Fim do for
//Atribui o diretório dos xml às variáveis
dirEntrada = new File(entrada);
dirValidados = new File(validados);
dirRej = new File(rejeitados);
dirExcluido = new File(excluidos);
dirAtualizados = new File(atualizados);
dirLayoutInvalido = new File(invalidos);
//Cria um array com os arquivos
File[] files = dirEntrada.listFiles();
//Inicia o Loop
for (File file : files)
{
if (file.isFile())
{
nomeArquivo = file.getName();
caminho = file.toString();
System.out.println("É um arquivo: " + file.getName());
try
{
JAXBContext context = JAXBContext.newInstance("br.com.audfis.nfe.v200");
Unmarshaller unmarshaller = context.createUnmarshaller();
File notaFile = new File(caminho);
TEnviNFe enviNFe = ObjectFactory.createTEnviNFe();
enviNFe = unmarshaller.unmarshal( new StreamSource(notaFile), TEnviNFe.class ).getValue();
String obrigacao = enviNFe.getNFe().get(0).getInfNFe().getId();
System.out.println("Obrigação: " + obrigacao +
" - Arquivo: " + file.getName());
}//Fim do try
catch (Exception ex)
{
System.out.println("Não foi possível ler o arquivo: " +
file.getName() + "Msg Erro: " + ex.getMessage());
}//Fim do catch
}//Verifica se o objeto encontrado é um arquivo.
else
{
System.out.println("Não é um arquivo: " + file.getName());
}
}//Fim do for (File file : files)
}// Fim do método gravaComplementoLog
}//Fim da classe