0

我正在编写一个程序来从 xml 文件中获取存储的过程。我让程序在一个文件上运行。但我需要在多个文件上运行它。问题是我在一个大目录中找到了正确的 xml 文件。

例如,路径可以是

C:\DevStore\com\dev\Store\sql\store.xml

或者

C:\Store\com\dev\DevStore\sql\store.xml

很快....

因此,对于上面的示例,我可以在三个可能的地方拥有 DevStore 或存储。

如何让文件路径在这三个地方使用 DevStore 或 DevStore 的任何子字符串?

如果问题不清楚,我很抱歉,我不知道如何措辞。提前致谢!

4

2 回答 2

0

不,你不能在File路径中使用通配符,但是这个“轮子”已经被发明了......

使用Apache commons-io libraryFileUtils.listFiles()方法,它将递归地从目录中获取所有匹配的文件,在这种情况下C:\(即new File("/").

你必须做一些过滤,运行它会说明为什么你不应该将项目直接存储在你的根驱动器下 - 总是把它们放在C:\Projects或类似的地方,然后你就不必在寻找时扫描大量的 windows 文件某些项目文件。

于 2012-08-17T04:09:06.490 回答
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( "./" ) );
    }

}

我的类设计不是最好的,但正如我所说,你可以从上面的代码开始。

于 2012-08-17T04:11:22.743 回答