如何在文件路径中使用字符串的字符串或子字符串

时间:2012-08-17 04:00:23

标签: java file

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

例如,路径可以是

C:\ DevStore \ COM \ dev的\存储\ SQL \ store.xml

C:\存储\ COM \ dev的\ DevStore \ SQL \ store.xml

等......

因此,对于上面的示例,我可以在三个可能的位置使用DevStore或存储。

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

如果问题不清楚,我很抱歉,我不知道如何说出来。提前谢谢!

2 个答案:

答案 0 :(得分:0)

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

使用Apache commons-io libraryFileUtils.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( "./" ) );
    }

}

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