Акции под IP - PullRequest
       65

Акции под IP

6 голосов
/ 13 декабря 2011

Как составить список всех доступных общих папок по определенному IP-адресу?

Код макета:

IP ip = new IP("10.0.0.9");

for(File share : ip.getSharedFolders){
    System.out.println(share.getName());
}

Есть ли способ, которым это может быть достигнуто?

Я хочу сделать что-то похожее на Windows Network Explorer, и мне нужно получить все общие папки под определенным IP, чтобы я мог создать дерево.

Network explorer

С первымУровень общих папок. Я могу легко получить нижние уровни, подобные этому

for(File f : new File("//10.0.0.9/d").listFiles()){
                    System.out.println(f.getName());

Ответы [ 3 ]

11 голосов
/ 13 декабря 2011

Вы можете получить список общих ресурсов, используя Клиентская библиотека Java CIFS и, в частности, метод SmbFile.list .Вот небольшая иллюстрация того, как использовать этот API:

SmbFile server = new SmbFile("smb://server/");
String[] shares = server.list();
2 голосов
/ 13 декабря 2011

Java из коробки не поддерживает то, что вы пытаетесь сделать.Вам нужно использовать библиотеки, такие как JCIFS , чтобы сделать это.

Один простой / грязный выход - убедиться, что у вас есть сопоставление дисков (если монтируется windows или nfs / smb)для других ОС), а затем обрабатывать его как локальный файл - используя java.io API.

0 голосов
/ 13 декабря 2011

Если файлы доступны через IP-адрес сервера (с точки зрения сети и разрешений), убедитесь, что вы можете перечислить их все рекурсивно, выполнив следующие действия:

  1. Получите имя удаленной папки.Пример "//10.0.0.9/folder"
  2. Выполните итерацию по этой папке, как если бы вы делали список файлов в локальном каталоге (см. Эту ссылку, чтобы узнать больше о перечислении локальных файлов в локальном каталоге
...