Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java库函数在不同目录中查找卷影文件_Java_File - Fatal编程技术网

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
来选择要移动的文件:


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

(Java 7 API)


目前,我将坚持您当前的解决方案(或采用您自己的解决方案)。

这不是我问题的答案。我知道所有这些方法。我只想要我写的代码所做的方法。我想是你做的。将copyDirectory与文件筛选器一起使用如何?这应该可以为您跟踪src和目标路径。正如我所说,我不是在寻找复制解决方案,而是寻找一种通用机制来识别另一个目录中的文件同级(这有许多应用程序,其中只有一个是复制文件)。什么是
sourceFolder
?这只是源文件的父级吗?你能提供一些例子吗?这很好,我一定会经常使用,谢谢(+1)。是的,当然,我知道我的代码是有效的,但这是我为x项目编写的样板文件,我讨厌没有这样的代码捷径。
File shadow = new File(FilenameUtils.concat(targetFolder.getAbsolutePath(),
    sourceFile.getAbsolutePath().substring(prefixLength));