【问题标题】:How to perform a glob search on a previous directory如何对上一个目录执行全局搜索
【发布时间】:2017-09-13 13:17:46
【问题描述】:

我正在尝试编写一个 java 程序,该程序将采用文件的确切路径或名称,或者采用某种形式的模式,如 glob。程序的内部结构只会针对文件路径说明符找到的每个文件重复。

这是我希望能够进入的一些路径的示例:

example.txt

处理本地目录中的“example.txt”。

*.txt

处理本地目录的所有文本文件。

../*

处理上一个目录中的所有文本文件。

这是我遇到很多麻烦的最后一个。我可以通过使用 PathMatcher 来让前两个工作,但如果不扫描程序正在运行的整个驱动器,我就无法让它模拟 ../。

我在让模式匹配工作时遇到了很多麻烦。我只是希望它以与 grep 类似的方式工作,我可以使用它来指定确切的文件或文件模式。

有没有这样做的例子?

【问题讨论】:

  • 为什么不为路径中出现的每个 '..' 直接 chdir 到上一个目录?
  • 我完全不明白这一点。 shell 已经完美地完成了您正在尝试使用程序教的内容 - 只需遍历您的 main-方法中的 args 数组。
  • @daniu 它在 linux 和 windows 上的工作方式完全一样吗?
  • @Andy 主要是......但差异几乎正是你应该将它留给 shell 并只期望文件列表的原因 - 你将在 Windows 和 Linux 上获得。
  • @daniu 我已经采用了该解决方案,对我来说效果很好。您不必这样做,但是如果您想将其写为答案,我会将其标记为已回答(并且您可以获得积分)。

标签: java glob


【解决方案1】:

当然,我会记分 :D 另外,有人可能会在谷歌上搜索这个,并且使用“已接受”的答案会更容易。

shell 会为您执行此操作,而且很可能比您尝试手动执行的操作更不容易出错。

private static void main(String[] files) {
    for (String file : files) {
        process(file);
    }
}

这将适用于我所知道的所有系统,几乎所有你会遇到的 globbing。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2013-08-14
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多