将文件从源复制到目标java时出错

use*_*160 5 java nio

//original file
Path original = Paths.get("C:\\Users\\Laksahan\Desktop\\bg.jpg"); 
File f = new File("C:\\Users\\Laksahan\\Desktop\\bg.jpg");

// new file
Path destination = Paths.get("C:\\Program Files\\Tour v0.1\\image\\"+f.getName()); 
try {
   Files.copy(original, destination, LinkOption.NOFOLLOW_LINKS);
} catch (IOException x) {
   x.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

我试过上面的方法来复制文件,它不会工作,它会打印出这个错误

java.nio.file.NoSuchFileException: C:\Users\Laksahan\Desktop\bg.jpg -> C:\Program Files\Tour v0.1\image\bg.jpg
Run Code Online (Sandbox Code Playgroud)

请帮忙

Sot*_*lis 12

如果在使用时不存在, Java 7的NIO 将不会创建文件夹Files.copy().

您可以做的最好的事情是检查文件夹,如果在调用之前它不存在则创建它copy.


Ale*_*kov 5

尝试

Path original = Paths.get("C:\\Users\\Laksahan\\Desktop\\bg.jpg");
Run Code Online (Sandbox Code Playgroud)

代替

Path original = Paths.get("C:\\Users\\Laksahan\Desktop\\bg.jpg"); 
Run Code Online (Sandbox Code Playgroud)

以编程方式创建文件夹,例如-

Path from = Paths.get("C:\\Users\\Laksahan\\Desktop\\bg.jpg"); 
Path to = Paths.get("C:\\Program Files\\Tour v0.1\\image\\"); 
Path destination;

File f = new File("C:\\Users\\Laksahan\\Desktop\\bg.jpg");

if (!Files.exists(to)) {
   try {
      Files.createDirectories(to);
   } catch (IOException ioe) {
      ioe.printStackTrace();
   }

   destination = Paths.get(to.toString() + "\\" + f.getName());
   try {
      Files.copy(from, destination, LinkOption.NOFOLLOW_LINKS);
   } catch (FileAlreadyExistsException faee) {
      faee.printStackTrace();
   } catch (IOException ioe) {
       ioe.printStackTrace();
   }
}
Run Code Online (Sandbox Code Playgroud)