我正在编写一个程序来从xml文件中获取存储过程。我让程序在一个文件上运行。但我需要在多个文件上运行它。问题是我在一个大目录中找到了正确的xml文件。
例如,路径可以是
C:\ DevStore \ COM \ dev的\存储\ SQL \ store.xml
或
C:\存储\ COM \ dev的\ DevStore \ SQL \ store.xml
等......
因此,对于上面的示例,我可以在三个可能的位置使用DevStore或存储。
如何让文件路径在这三个地方使用DevStore或DevStore的任何子字符串?
如果问题不清楚,我很抱歉,我不知道如何说出来。提前谢谢!
答案 0 :(得分:0)
不,你不能在File
路径中使用通配符,但这个“轮子”已经被发明......
使用Apache commons-io library的FileUtils.listFiles()
方法,该方法将递归获取目录中的所有匹配文件,在本例中为C:\
(即new File("/")
。
您必须进行一些过滤,并且运行它将说明为什么您不应将项目直接存储在根驱动器下 - 始终将它们放在C:\Projects
或类似之下,然后您不必扫描虽然在查找某些项目文件时有大量的Windows文件。
答案 1 :(得分:0)
以下是一些可以开始工作的代码。
import java.io.*;
public class Foo {
public static void traverseAndProcess( File startDir ) {
for ( File f : startDir.listFiles() ) {
// this file is a directory?
if ( f.isDirectory() ) {
// yes, it is, so we need to go inside this directory
// calling the method again
traverseAndProcess( f );
} else {
// no, it is not a directory
// verifies if the file name finishes with ".xml"
if ( f.getName().lastIndexOf( ".xml" ) != -1 ) {
// it is a xml (just verifying the extension)
// so, process this file!
process( f );
}
}
}
}
private static void process( File f ) {
// here you will process the xml
System.out.println( "Processing " + f + " file..." );
}
public static void main( String[] args ) {
// processing the current directory... change it
traverseAndProcess( new File( "./" ) );
}
}
我的班级设计不是最好的,但正如我所说,你可以从上面的代码开始。