Java库函数在不同目录中查找卷影文件
我经常有这样的代码:我在一个目录(包括子目录)上循环,需要将文件移动/复制到另一个目录。我觉得单调乏味的是确定文件将放在哪里的过程。我经常这样做,通常是这样:Java库函数在不同目录中查找卷影文件,java,file,Java,File,我经常有这样的代码:我在一个目录(包括子目录)上循环,需要将文件移动/复制到另一个目录。我觉得单调乏味的是确定文件将放在哪里的过程。我经常这样做,通常是这样: File shadow = new File(sourceFile.getAbsolutePath() .replace( sourceFolder.getAbsolutePath(),
File shadow = new File(sourceFile.getAbsolutePath()
.replace(
sourceFolder.getAbsolutePath(),
targetFolder.getAbsolutePath()
)
);
我的问题是:在任何一个主要的开源库中,是否有一个标准的例程来执行这个或类似的操作?反正我也没找到一个
我不是在寻找完整的移动/复制解决方案,我知道很多。我只想要上面代码的等价物
例如,根据要求: 源文件夹:
src/main/resources
目标文件夹:
target/classes
源文件:
src/main/resources/com/mycompany/SomeFile.txt
目标文件(我正在查找的文件):
(我通常在maven环境中做类似的事情,因此这些文件夹也可以是非maven文件夹,同样,问题与maven无关)您看过
org.apache.commons.io.FilenameUtils
方法吗?它需要附加一个基本目录(您的目标)和文件名。您需要计算sourceFolder前缀(“src/main/resources”.length())并执行子字符串。比如:
File shadow = new File(FilenameUtils.concat(targetFolder.getAbsolutePath(),
sourceFile.getAbsolutePath().substring(prefixLength));
不过,这并不比你自己滚好多少
Apache的
org.Apache.commons.io.FileUtils
也有您可能使用的功能,尽管我没有看到您的问题的具体解决方案:
copyDirectory
和FileFilter
来选择要移动的文件:
目前,我将坚持您当前的解决方案(或采用您自己的解决方案)。这不是我问题的答案。我知道所有这些方法。我只想要我写的代码所做的方法。我想是你做的。将copyDirectory与文件筛选器一起使用如何?这应该可以为您跟踪src和目标路径。正如我所说,我不是在寻找复制解决方案,而是寻找一种通用机制来识别另一个目录中的文件同级(这有许多应用程序,其中只有一个是复制文件)。什么是
sourceFolder
?这只是源文件的父级吗?你能提供一些例子吗?这很好,我一定会经常使用,谢谢(+1)。是的,当然,我知道我的代码是有效的,但这是我为x项目编写的样板文件,我讨厌没有这样的代码捷径。
File shadow = new File(FilenameUtils.concat(targetFolder.getAbsolutePath(),
sourceFile.getAbsolutePath().substring(prefixLength));