如何在java中复制文件

我试图在java中复制文件并将其移动到新文件夹。 这是我一直在使用的代码,但我总是在指定的目录中收到此错误“(访问被拒绝)”。 有没有办法可以解决这个或更好的方法来复制文件? 谢谢

try{ File f1 = new File(fpath); File f2 = new File("C:/users/peter/documents/foldertest2/hats"); InputStream in = new FileInputStream(f1); //For Append the file. //OutputStream out = new FileOutputStream(f2,true); //For Overwrite the file. OutputStream out = new FileOutputStream(f2); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0){ out.write(buf, 0, len); } in.close(); out.close(); System.out.println("File copied."); } catch(FileNotFoundException ex){ System.out.println(ex.getMessage() + " in the specified directory."); System.exit(0); } catch(IOException e){ System.out.println(e.getMessage()); } 

更新:我检查了文件夹权限,它们都对所有用户开放,我的

编辑搞砸了,第二次尝试:

您必须为FileOutputStream指定一个有效的文件名,只需将文件名附加到目标路径C:/users/peter/documents/foldertest2/hats/hat3 ,只有文件夹名称,它将尝试访问该文件夹,就好像这是一个文件而失败了。

Apache Commons IO也是另一种方法,特别是FileUtils.copyFile(); 它为您处理所有繁重的工作。

使用Java 7:

 import static java.nio.file.StandardCopyOption.*; 

 Files.copy(source, target, REPLACE_EXISTING); 

http://docs.oracle.com/javase/tutorial/essential/io/copy.html

有没有办法可以解决这个或更好的方法来复制文件?

如果您有选项,我建议您使用Java版本7 ,并使用Path.copyTo方法。

将此路径所在的文件复制到目标位置。 […]

否则我建议至少使用NIO包和FileChannels

如果您收到此exception,则访问权限将被拒绝,即您无权写入指定的目录或文件。 所以,先检查一下。 例如,尝试手动在指定目录中创建文件。 你可能试图在别人的主目录中创建文件? 或者您的java程序正在以其他用户身份运行? foldertest2怎么样? 它是否存在且可写? 尝试将文件复制到那里。

最后的提示。 当你设法复制文件时,我建议你使用IOUtils.copy() (来自jacarta commons)。 我经常使用它。 它几乎完全与您实现的相同,但只能编写一行代码。

嗯,看起来你试图在Windows上运行它,你不应该在你的路径中使用\而不是/?

正如AlexR所说,检查您尝试写入的目录的权限。