FileInputStream с путем содержит подстановочный знак - PullRequest
2 голосов
/ 07 ноября 2010

Я получаю полный путь для некоторых файлов из базы данных, а затем архивирую эти файлы внутри этого пути. Так что проблема здесь в том, что путь содержит шаблоны даже для каталога и файлов. Например:

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

Так как же я могу получить эти xml-файлы, расположенные по этому пути к потоку ввода файлов, чтобы позже сжать их?

Если у меня нет подстановочных знаков, и только путь представляет каталог, в котором находятся файлы, я делаю что-то вроде следующего, чтобы добавить каждый файл. Но проблема в том, что мой путь содержит имена файлов с символами подстановки.

     //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);
        }
       }

Спасибо.

1 Ответ

3 голосов
/ 07 ноября 2010

Подстановочные знаки обычно интерпретируются оболочкой. Вы можете сделать нечто подобное в Java, используя java.nio.file.FileSystem.getPathMatcher(). См. этот учебник для получения дополнительной информации и примеров использования.

...