我必须将文件从一台Windows机器复制到另一台(目标是虚拟机)。 当我以普通用户身份执行时,文件被成功复制并且: 文件f =新文件(来源); 的System.out.println(f.exists());
输出正确。
当我以管理员身份打开cmd并运行相同的程序时,这段代码返回false`。并在尝试时
java.nio.files.Files.copy(source, target, options);
我收到以下异常java.nio.file.NoSuchFileException
...
在这种情况下,当文件所在的远程机器上的文件夹映射到驱动器时,如
source = "N:\\..."
有人知道是什么原因吗? (或尊敬地有解决方案)?
答案 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你没有从同一条路径发射
一种修复方法:在读取文件之前,编写另一个文件,并检查它在文件系统中的写入位置