java - 路径包含通配符的 FileInputStream

标签 java wildcard fileinputstream

我从数据库中获取一些文件的完整路径,然后将这些文件压缩到该路径内。所以这里的问题是路径甚至目录和文件也包含通配符。 例如:

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

谢谢。

最佳答案

通配符通常由 shell 解释。您可以使用 java.nio.file.FileSystem.getPathMatcher() 在 Java 中执行类似的操作。请参阅this tutorial了解更多信息和使用示例。

关于java - 路径包含通配符的 FileInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119042/

相关文章:

java - hibernate 缓慢以获取 Postgres 连接

输出 XML 文件的 Java 程序 - 多个问题

java - Spring-Boot 仅在一个配置文件中执行 data.sql

Java 正则表达式匹配字符前后的空格

java - FileInputStream 读取文件的最后 128 个字节

java - 从文本文件中剥离数据

java - 适用于 Android 和 GSON 的 ProGuard

bash - mv 不识别通配符/变量扩展

bash - 如果字符串变量包含通配符,如何检查 shell 脚本?

c++ - 每行读取 int 并显示百分比