复制文件Java

时间:2017-10-20 12:27:40

标签: java

我正在尝试使用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方法返回文件

4 个答案:

答案 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();
}