0

xml ファイルからストアド プロシージャを取得するプログラムを作成しています。プログラムを 1 つのファイルで実行しています。しかし、複数のファイルで実行する必要があります。問題は、大きなディレクトリで正しい xml ファイルを見つけることです。

たとえば、パスは次のいずれかです。

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

また

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

すぐ....

したがって、上記の例では、DevStore またはストアのいずれかを 3 つの場所に配置できます。

これらの 3 つの場所で、ファイル パスに DevStore または DevStore の任意の部分文字列を使用させるにはどうすればよいですか?

質問が曖昧で申し訳ありません。前もって感謝します!

4

2 に答える 2

0

いいえ、パスにワイルドカードを使用することはできませんFileが、この「ホイール」はすでに発明されています...

この場合、一致するすべてのファイルをディレクトリから再帰的に取得するApache commons-io ライブラリのメソッドを使用します(つまり、 .FileUtils.listFiles()C:\new File("/")

いくつかのフィルタリングを行う必要があり、それを実行すると、ルート ドライブの直下にプロジェクトを保存してはならない理由がC:\Projectsわかります。特定のプロジェクト ファイル。

于 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 に答える