【发布时间】:2015-08-27 14:07:10
【问题描述】:
在我的情况下,我需要将文件从本地文件夹复制到共享位置。
Files.copy(new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg").toPath(), new File("\\\10.101.1.2\\resources\\Files\\exbury\\Tulips.jpg").toPath(),
java.nio.file.StandardCopyOption.REPLACE_EXISTING);
java.nio.file.InvalidPathException: Illegal char at index 1: \.101.1.2\ZoneResources\File Share\burusoth\Tulips.jpg 在 sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182) 在 sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153) 在 sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77) 在 sun.nio.fs.WindowsPath.parse(WindowsPath.java:94) 在 sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255) 在 java.io.File.toPath(File.java:2234) 在 com.zone.qv2.s2c.resultupload.TestClass.method(TestClass.java:31) 在 com.zone.qv2.s2c.resultupload.TestClass.main(TestClass.java:22)
这意味着 NIO 不允许在question 中所说的路径前面出现slashes \。在我的情况下,我必须将共享位置指定为以slashes 开头的 url。我该如何克服这个问题?
有没有办法将文件从本地位置复制到共享位置?
【问题讨论】:
-
而不是
"\\\"尝试"\\\\",这与转义后的`\`相同。你真的必须使用 DOS 路径分隔符吗? -
另一种“修复”此问题的方法是将网络位置绑定到“Windows 驱动器”。 sevenforums.com/tutorials/49517-map-network-drive.html
-
@Peter 谢谢。简单的转义错误让我很生气。
-
@Peter 除了使用 DOS 路径分隔符之外还有其他方法吗?
-
您可以像使用 URL 一样使用
/。这并不意味着它会自动挂载 UNC 路径,您可以使用/而不是 `\`。