Акции под IP

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

Макет кода:

IP ip = new IP("10.0.0.9");

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

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

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

Сетевой проводник

С общими папками первого уровня я могу легко получить более низкие уровни, как это

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

3 ответа

Решение

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

SmbFile server = new SmbFile("smb://server/");
String[] shares = server.list();

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

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

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

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