使用 Pentaho 的 Kettle 工具,我有一个转换设置,它从一个 Get File Names 步骤开始,以从一个目录中获取所有 XML 文件。步骤配置如下:
File/Directory: "c:\DataFolder"
Wildcard (RegExp): ".*xml"
这很好用,并为我提供了文件夹“DataFolder”中的所有 XML 文件。
但是,如果 DataFolder 不存在(因为其他人删除了它),我会收到此错误:
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : org.apache.commons.vfs.FileNotFolderException: Could not list the contents of "file:///c:/DataFolder" because it is not a folder.
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : at org.apache.commons.vfs.provider.AbstractFileObject.getChildren(Unknown Source)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : at org.pentaho.di.core.fileinput.FileInputList.createFileList(FileInputList.java:268)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : at org.pentaho.di.trans.steps.getfilenames.GetFileNamesMeta.getFileList(GetFileNamesMeta.java:690)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : at org.pentaho.di.trans.steps.getfilenames.GetFileNames.init(GetFileNames.java:336)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : at org.pentaho.di.trans.step.StepInitThread.run(StepInitThread.java:62)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : at java.lang.Thread.run(Unknown Source)
或者简而言之:FileNotFolderException:无法列出“file:///c:/DataFolder”的内容,因为它不是文件夹。
如果该文件夹不存在,我只想停止转换而不继续。
我尝试使用 File Exists 步骤与 Filter Rows 步骤相结合来提供条件,但没有运气。Hello World 教程向您展示了如何检查文件是否存在,而不是整个文件夹。