Акции под 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-адрес сервера (по сети и по разрешениям), убедитесь, что вы можете перечислить их все рекурсивно, выполнив следующие действия:
- Получить имя удаленной папки. пример
"//10.0.0.9/folder"
- Выполняйте итерацию по этой папке так же, как вы делали бы список файлов в локальном каталоге (см. Эту ссылку, чтобы узнать больше о перечислении локальных файлов в локальном каталоге