代码之家  ›  专栏  ›  技术社区  ›  Sean Patrick Floyd

Java库函数在不同目录下查找影子文件

  •  1
  • Sean Patrick Floyd  · 技术社区  · 14 年前

    File shadow = new File(sourceFile.getAbsolutePath()
                            .replace(
                                 sourceFolder.getAbsolutePath(),
                                 targetFolder.getAbsolutePath()
                            )
                  );
    

    Commons IO 不管怎样。。。

    我不是在寻找完整的移动/复制解决方案,我知道这些吨。我只想要上面代码的等价物。


    src/main/resources
    

    目标文件夹:

    target/classes
    

    src/main/resources/com/mycompany/SomeFile.txt
    

    目标文件(我要查找的文件):

    target/classes/com/mycompany/SomeFile.txt
    

    (我通常在maven上下文中做这样的事情,因此这些文件夹也可以是非maven文件夹,问题与maven无关)

    2 回复  |  直到 14 年前
        1
  •  1
  •   Sean Patrick Floyd    14 年前

    你要找的东西我也没有找到,但它很快就会存在当jdk7(最终)爬出大门。

    Path.relativize(Path) (Java 7 API)

    目前,我将坚持您当前的解决方案(或推出您自己的上述等效方案)。

        2
  •  1
  •   Gray droiddeveloper    11 年前

    org.apache.commons.io.FilenameUtils concat 方法?它需要附加一个基本目录(目标)和文件名。您需要计算sourceFolder前缀(“src/main/resources”.length())并执行子字符串。比如:

    File shadow = new File(FilenameUtils.concat(targetFolder.getAbsolutePath(),
        sourceFile.getAbsolutePath().substring(prefixLength));
    

    不过,这并不比你自己滚好多少。


    org.apache.commons.io.FileUtils 还有您可能使用的功能,尽管我没有看到您的问题的特定解决方案:

    你可以用 copyDirectory FileFilter 要选择要移动的文件,请执行以下操作: