我正在尝试使用java复制文件。我有一个需要复制的文件对象的arraylist但是当实际的副本发生时,目标文件夹变成了一个文件而没有被复制
System.out.println("Dest: " + destPath.toString());
ArrayList<File> fileList = listFiles(sourceDir);
for (File file : fileList) {
Path sourcePath = Paths.get(file.getPath());
System.out.print("\r\nSource: " + sourcePath.toString());
CopyOption[] options = new CopyOption[] {
StandardCopyOption.REPLACE_EXISTING,
StandardCopyOption.COPY_ATTRIBUTES
};
try {
Files.copy(sourcePath, destPath, options);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
印刷路径是: 目的地:C:\ Users \ Ceri \ Desktop \ New folder(2)
来源:C:\ Users \ Ceri \ Desktop \ New folder \ Blue cave floor.png 来源:C:\ Users \ Ceri \ Desktop \ New folder \ New Text Document.txt
基本上我正在尝试获取目录中所有已更改/新文件的列表 - 由文本字段指定 - 并将它们复制到另一个目录 - 再次由文本字段指定
listFiles方法返回文件
答案 0 :(得分:1)
如果您不想复制文件,destination
路径需要描述文件。
只需将文件名添加到destPath
。
Files.copy(sourcePath, destPath+"/"+file.getName(), options);
答案 1 :(得分:1)
来源:C:\ Users \ Ceri \ Desktop \ New folder \ Blue cave floor.png来源:C:\ Users \ Ceri \ Desktop \ New folder \ New Text Document.txt
首先确保你的斜线是正确的
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
\\
例如,将路径更改为:
/
或强>
C:/Users/Ceri/Desktop/New folder/Blue cave floor.png
然后再试一次。
答案 2 :(得分:0)
一种方法是使用Apache commons IO FilesUtils
。
try {
Path fileToCopy = Paths.get("path-of-file-to-copy");
FileUtils.copyFile(fileToCopy.toFile(), new File("your-destination-path"));
} catch (IOException e) {
//handle
}
或另一种方法是使用标准的Java NIO Files.copy()
方法
try {
Path fileToCopy = Paths.get("path-of-file-to-copy");
Files.copy(fileToCopy, Paths.get("your-destination-path"));
} catch (IOException e) {
//handle
}
答案 3 :(得分:-1)
如果您使用Apache Commons - 您可以使用FileUtils
类来复制整个目录
try {
FileUtils.copyDirectory(sourceDir, destPath);
} catch (IOException e) {
e.printStackTrace();
}