【问题标题】:Java NIO move file to a shared locationJava NIO 将文件移动到共享位置
【发布时间】: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 路径,您可以使用 / 而不是 `\`。

标签: java nio


【解决方案1】:

您用于 UNC 路径的 Java 字符串值为:

\\\10.101.1.2\\resources\\Files\\exbury\\Tulips.jpg

UNC 路径通常采用以下形式:

\\10.101.1.2\resources\Files\exbury\Tulips.jpg  

每个斜线 \ 必须在 Java 字符串中转义为 \\

生成路径的 Java String 值应该是:

\\\\10.101.1.2\\resources\\Files\\exbury\\Tulips.jpg

您缺少前面的 \ 字符。

使用/也可以,不需要转义;使用/ 的Java 字符串值是:

//10.101.1.2/resources/Files/exbury/Tulips.jpg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-28
    • 2022-01-09
    • 2017-04-02
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多