Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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
如何使用Java8复制具有不同扩展名的多个文件?_Java_Nio - Fatal编程技术网

如何使用Java8复制具有不同扩展名的多个文件?

如何使用Java8复制具有不同扩展名的多个文件?,java,nio,Java,Nio,我的工作目录(.log、.xml、.opf等)中有不同类型的文件。我需要将它们复制到另一个文件夹中。但据我所知,仅复制了一个文件,这是因为使用了StandardCopyOption。请在复制方法中替换现有的。 这是我的Java代码 String currentDirectory = new File(new File("").getAbsolutePath()).getPath(); tempDirPath = Files.createDirectories(Paths.get(jobFold

我的工作目录(.log、.xml、.opf等)中有不同类型的文件。我需要将它们复制到另一个文件夹中。但据我所知,仅复制了一个文件,这是因为使用了
StandardCopyOption。请在复制方法中替换现有的
。
这是我的Java代码

String currentDirectory = new File(new File("").getAbsolutePath()).getPath();

tempDirPath = Files.createDirectories(Paths.get(jobFolder).resolve("output"));

try {
            Files.copy(Paths.get(currentDirectory +File.separator+"content.xml"), tempDirPath, StandardCopyOption.REPLACE_EXISTING);
            Files.copy(Paths.get(currentDirectory +File.separator+"content.smil"), tempDirPath, StandardCopyOption.REPLACE_EXISTING);
            Files.copy(Paths.get(currentDirectory +File.separator+"content.opf"), tempDirPath, StandardCopyOption.REPLACE_EXISTING);
            Files.copy(Paths.get(currentDirectory +File.separator+"content.ncx"), tempDirPath, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
请帮我解决这个问题。
提前谢谢

文件。复制
第二个参数不是目录,而是文件名

应该是:

Files.copy(Paths.get(currentDirectory +File.separator+"content.ncx"), tempDirPath.resolve("content.ncx"), StandardCopyOption.REPLACE_EXISTING);

REPLACE_EXISTING
的意思是,如果已经存在content.xml,则将替换该content.xml,但如果复制content.smil,则不会替换content.xml。但是如果您提供了一个目标文件名,并且每个文件的名称都相同,那么是的,您将替换它。但这不是Java的问题,而是文件系统通常如何处理事情(一个文件夹中不能有两个同名文件)。如果这是您的问题,那么您需要自己提供一个唯一的名称。是否仅将一些选定的文件从源目录复制到目标目录?如果要复制所有这些文件,只需使用FileUtils方法-FileUtils.copyDirectory(directory,destination)注意:应该使用
path.get(currentDirectory,“context.xml”)
而不是使用
File.separator
。这就是
path.get()
varargs的作用。或者,您可以使用apache的FileUtils复制整个文件夹(即使用copyDirectory方法)@woytech No..i只想复制选定的文件。。所以copyDirectory不能使用..realponsign我得到它是因为正斜杠,没有给它“/”,如果符号可能随操作系统而变化,我使用了这种方法。。Nafas我尝试在这里只使用java。Thomas感谢您的解释。它非常有用,这为我提供了正确的输出。当我使用tempDirPath作为第二个参数时,它只对一个文件有效,原因可能是@Thomas解释。。非常感谢。