Java文件系统:UNC路径缺少共享名

时间:2013-12-16 13:10:51

标签: java

我有访问共享文件夹的情况。 以下是一个示例java程序。

import java.nio.file.*;

/**
 * Test
 */
public class Test
{
  public static void main(String[] args)
  {
    String strPath = "//WG0202";
    Path path = FileSystems.getDefault().getPath(strPath).getRoot();
    if (path != null)
    {
      System.out.println(path.toFile().exists());
    }
  }
}

让我们假设如下 - 计算机名称:WG0202

此计算机中共享的文件夹为:TestFolder

因此,如果我将路径指定为:// WG0202 / TetFolder

然后它工作正常。

但如果我将路径指定为:// WG0202

然后它失败了以下异常 -

Exception in thread "main" java.nio.file.InvalidPathException: UNC path is missing sharename: //WG0202
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:118)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)

2 个答案:

答案 0 :(得分:2)

UNC路径确实是由主机和共享组成的。 您正试图在没有共享的情况下使用UNC,因为您的例外状态。

澄清:

//WG0202/TestFolder

是有效的UNC路径:

//WG0202/ 

不是。

干杯

答案 1 :(得分:1)

来自档案的Official Javadoc

  

用户界面和操作系统使用依赖于系统的路径名   字符串命名文件和目录。这堂课提出了一个   抽象的,与系统无关的分层路径名视图。一个   抽象路径名有两个组成部分:

     
      
  1. 可选的系统相关前缀字符串,例如磁盘驱动器说明符,UNIX根目录为"/",或"\\\\"为一个微软   Windows UNC路径名

  2.   
  3. 零个或多个字符串名称的序列。

  4.         

    在   抽象路径名中的名字可以是目录名,也可以是   Microsoft Windows UNC路径名的情况,主机名。随后每一次   抽象路径名中的名称表示目录;姓氏可以   表示目录或文件。空的抽象路径名有   没有前缀和空名称序列。