java:将文件从一台机器复制到另一台机器会抛出java.nio.file.NoSuchFileException

时间:2015-12-01 18:02:03

标签: java java.nio.file nosuchfileexception

我必须将文件从一台Windows机器复制到另一台(目标是虚拟机)。 当我以普通用户身份执行时,文件被成功复制并且:     文件f =新文件(来源);     的System.out.println(f.exists());

输出正确。
当我以管理员身份打开cmd并运行相同的程序时,这段代码返回false`。并在尝试时

java.nio.files.Files.copy(source, target, options);

我收到以下异常java.nio.file.NoSuchFileException ... 在这种情况下,当文件所在的远程机器上的文件夹映射到驱动器时​​,如

source = "N:\\..."

有人知道是什么原因吗? (或尊敬地有解决方案)?

2 个答案:

答案 0 :(得分:2)

您的问题与java完全无关,它与Windows如何管理不同权限级别下的映射网络驱动器有关。

准确地说:切换到提升的用户级别时,网络驱动器映射会丢失。

要修复它,您必须为网络驱动器启用链接连接。运行Windows 7时:在注册表编辑器中,在EnableLinkedConnections下创建一个名为HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System且值为{1}的DWORD。

详细说明可在此处找到:http://www.winability.com/how-to-make-elevated-programs-recognize-network-drives/

答案 1 :(得分:0)

1不是同一个系统

2不一样的驱动器

3路径不完全相同

4你没有从同一条路径发射

一种修复方法:在读取文件之前,编写另一个文件,并检查它在文件系统中的写入位置