2013-08-09 2 views
4

Я пытаюсь получить доступ к сетевой папке/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

+0

'smb: // xxx' не является допустимым именем для класса' File', см. API (http://docs.oracle.com/javase/7/docs/api/java/io/File. HTML). В UNIX всегда должен начинаться с '/'. В Windows вы также можете использовать UNC-пути. Поэтому ответ Энтони прав. – dtech

+0

Что относительно Java NIO.2? –

+0

Вы можете проверить себя: 'Path path = Paths.get (URI.create (« smb: // myserver/transfer »));' 'Files.exists (путь) .', но мне не повезло с файловым файлом' FileSystemProvider ', и, насколько мне известно, нет доступного CIFS доступного« FileSystemProvider ». –

ответ

5

Либо смонтировать раздел и доступ к нему, как и любому локальному каталогу или использовать специализированную библиотеку, такие как JCIFS или Apache Commons VFS.

Смежные вопросы