2011-10-27 7 views
2

私の石英の仕事では、commons-vfsを使ってディレクトリからcsvファイルを読みたいと思っています。フォルダでCommons vfs findFiles想像上のファイル

try { 
    FileSystemManager fsManager = VFS.getManager(); 
    final FileObject fileObject = fsManager.resolveFile(getJob().getDirectory()); 
    if(fileObject.getType() != FileType.FOLDER) { 
     throw new FileTransferException("Invalid directory : " + getJob().getDirectory()); 
    } 

    final FileFilter fileFilter = new FileFilter() { 

     @Override 
     public boolean accept(FileSelectInfo fileInfo) { 
      try { 
       boolean isCSV = fileInfo.getFile().getName().getBaseName().endsWith(".csv"); 
       logger.debug("TEST : {} {} " + fileInfo.getFile().getName(), fileInfo.getFile().getType() , isCSV); 
       long fileTime = fileInfo.getFile().getContent().getLastModifiedTime(); 
       return isCSV; 
      } catch (FileSystemException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       return false; 
      } 
     } 
    }; 

    FileSelector selector = new FileFilterSelector(fileFilter); 
    FileObject[] findFiles = fileObject.findFiles(selector); 
    for (int i = 0; i < findFiles.length; i++) { 
     logger.info("Found {} : {}", i, findFiles[i]); 
    } 
    } catch(Exception e) { 
     throw new JobExecutionException(e); 
    } 

いくつかのファイルがありますが、私は、ファイルの日付をチェックして、あまりにも古いファイルをフィルタリングしたい場合には、execeptionをスローします。 また、ファイルの種類として奇妙な「架空」を示している - それは実際のファイルで、自身がそれを見つけた:

18:13:27.807 DEBUG [AE-Scheduler_Worker-2][CsvImportJob] 
TEST : imaginary false file:///e:/some_directory /not_csv.txt 
org.apache.commons.vfs2.FileSystemException: Could not determine the last modified timestamp of "file:///e:/some_directory /not_csv.txt" because it does not exist. 
    at org.apache.commons.vfs2.provider.DefaultFileContent.getLastModifiedTime(DefaultFileContent.java:165) 

私が間違っているのか?

答えて

1

ディレクトリ名の末尾にエラーの不要なスペースが見つかりました....

関連する問題