2

データベースからいくつかのファイルのフルパスを取得し、それらのファイルをそのパス内に圧縮します。したがって、ここでの問題は、ディレクトリとファイルに対してもパスにワイルドカードが含まれていることです。例えば:

/myfolder/product/test/*.xml
 or
/myfolder/*/*.xml

では、これらのxmlファイルをファイル入力ストリームへのパスの下に置いて後でzipする方法を教えてください。

ワイルドカードがなく、パスだけがファイルが存在するディレクトリを表す場合は、次のようにして各ファイルを追加します。しかし、問題は、私のパスにワイルドカートを含むファイル名が含まれていることです。

     //List of the files in the directry
        File f = new File("/folder");
        String files[] = f.list();
        BufferedInputStream in = null;

        for(int i =0;i<files.length;i++){
        in = new BufferedInputStream(new FileInputStream("/folder/"+files[i]), 1000);
        out.putNextEntry(new ZipEntry("somepath/"+files[i]));
        int count;

        while ((count = in.read(data, 0, 1000)) != -1) {
            out.write(data, 0, count);
        }
       }

ありがとうございました。

4

1 に答える 1

3

通常、ワイルドカードはシェルによって解釈されます。を使用してJavaで同様のことを行うことができますjava.nio.file.FileSystem.getPathMatcher()。詳細と使用例については、このチュートリアルを参照してください。

于 2010-11-07T18:41:39.460 に答える