我有访问共享文件夹的情况。 以下是一个示例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)
答案 0 :(得分:2)
UNC路径确实是由主机和共享组成的。 您正试图在没有共享的情况下使用UNC,因为您的例外状态。
澄清:
//WG0202/TestFolder
是有效的UNC路径:
//WG0202/
不是。
干杯
答案 1 :(得分:1)
来自档案的Official Javadoc
用户界面和操作系统使用依赖于系统的路径名 字符串命名文件和目录。这堂课提出了一个 抽象的,与系统无关的分层路径名视图。一个 抽象路径名有两个组成部分:
可选的系统相关前缀字符串,例如磁盘驱动器说明符,UNIX根目录为
"/"
,或"\\\\"
为一个微软 Windows UNC路径名和- 醇>
零个或多个字符串名称的序列。
在 抽象路径名中的名字可以是目录名,也可以是 Microsoft Windows UNC路径名的情况,主机名。随后每一次 抽象路径名中的名称表示目录;姓氏可以 表示目录或文件。空的抽象路径名有 没有前缀和空名称序列。