Я пытаюсь получить доступ к сетевой папке/UNC-пути из Java на Mac OSX. В Windows, следующая тестовая программа отлично работает (по крайней мере, один из испытанных путей):Как получить доступ к сетевым путям из Java на OSX?
public class PathTest {
public static void main(String[] args) {
for (String path : Arrays.asList(
"\\\\myserver\\transfer", "//myserver/transfer", "file://myserver/transfer", "smb://myserver/transfer")) {
File f = new File(path);
System.out.println(path + ": " + f.getAbsolutePath() + ", " + f.exists());
Path p = Paths.get(path);
System.out.println(path + ": " + p.toAbsolutePath() + ", " + Files.exists(p));
}
}
}
на Mac OS она не доходит до папки:
\\myserver\transfer: /Users/tim/IdeaProjects/PathTest/\\myserver\transfer, false
//myserver/transfer: /myserver/transfer, false
file://myserver/transfer: /Users/tim/IdeaProjects/PathTest/file://myserver/transfer, false
smb://myserver/transfer: /Users/tim/IdeaProjects/PathTest/smb://myserver/transfer, false
Когда я использую Finder, я могу доступ к папке (с использованием пользователя гостя), используя «smb: // myserver/transfer». Что не так?
EDIT добавлен тест NIO.2
'smb: // xxx' не является допустимым именем для класса' File', см. API (http://docs.oracle.com/javase/7/docs/api/java/io/File. HTML). В UNIX всегда должен начинаться с '/'. В Windows вы также можете использовать UNC-пути. Поэтому ответ Энтони прав. – dtech
Что относительно Java NIO.2? –
Вы можете проверить себя: 'Path path = Paths.get (URI.create (« smb: // myserver/transfer »));' 'Files.exists (путь) .', но мне не повезло с файловым файлом' FileSystemProvider ', и, насколько мне известно, нет доступного CIFS доступного« FileSystemProvider ». –