У меня есть ситуация для доступа к общим папкам. Ниже приведен пример программы Java.Файловая система Java: UNC-путь отсутствует sharename
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)
Я не верю, что Windows SMB позволит вам совместно использовать «корень». В сущности, я пытаюсь сказать, что я не верю в протокол SMB, существует концепция доли без пути. Я полагаю, в Windows, когда вы это делаете, он вызывает вызов SMB для списка доступных акций. В вашем тестовом коде вы полагаетесь на операционную систему, которая из контекста, похоже, является Windows, для обработки соединения с удаленным хостом. Функция, которую вы пытаетесь использовать, вероятно, записывается в Проводник Windows, а не в базовую ОС. Впрочем, только догадка. – CodeChimp
Да, это ОС Windows. – Subbu