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

时间:2013-10-22 19:21:51

标签: 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();
}

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

java.nio.file.NoSuchFileException: C:\Users\Laksahan\Desktop\bg.jpg -> C:\Program Files\Tour v0.1\image\bg.jpg

请帮助

3 个答案:

答案 0 :(得分:11)

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

您可以做的最好的事情是检查文件夹,如果它不存在则创建它,然后再拨打copy

答案 1 :(得分:4)

尝试

Path original = Paths.get("C:\\Users\\Laksahan\\Desktop\\bg.jpg");

而不是

Path original = Paths.get("C:\\Users\\Laksahan\Desktop\\bg.jpg"); 

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

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

答案 2 :(得分:0)

我不确定您的工作环境,但如果它比Windows-XP更新,除了安装程序服务之外,任何人都无法访问位置"C:\\Program Files\\",或者除非您通过安全设置明确提供权限。

您尝试复制到任何其他位置。它应该工作