JFileChooser - просмотр общего пути как \\machineIp
Я использую JFileChooser в своем приложении Swing. Пользователь должен перейти к общему пути, например, \\ip\ (например, \\100.150.200.222\ - в проводнике Windows этот путь доступен и содержит все общие папки на этом компьютере). Когда пользователь вводит \\ ip \ и нажимает "ОТКРЫТЬ", окно выбора файла закрывается. Вместо этого, если пользователь задает какое-либо имя общей папки в удаленной системе, средство выбора файлов отображает файлы (например, \\100.150.200.222\sharedFolder\). Пожалуйста, помогите преодолеть это, чтобы пользователь мог перейти к \\ ip \
1 ответ
\\100.150.200.222\
- в проводнике Windows этот путь доступен и содержит все общие папки на этом компьютере
Действительно, но \\100.150.200.222
это не сама папка, поэтому средство выбора файлов не работает. Чтобы получить список общих папок по этому IP-адресу, необходимо использовать стороннюю библиотеку, как предлагается в этом посте: Общие ресурсы под IP
String[] foldernames = new SmbFile("smb://100.150.200.222/").list();
Затем я вижу три возможных решения, позволяющих пользователю выбрать файл:
- Вы знаете, что на этом IP-адресе есть только одна соответствующая общая папка:
Тогда это очень просто: получите имя 1-й общей папки с помощью JCIFS и откройте ее в окне выбора файлов.
File folder = new File("\\100.150.200.222\"+foldernames[0]);
new JFileChooser(folder).showSaveDialog(null);
- Позвольте пользователю выбрать общую папку с промежуточным диалогом. Это не очень хорошо с точки зрения пользовательского опыта, но это может быть сделано в одной строке с
JOptionPane.showInputDialog()
,
String foldername = JOptionPane.showInputDialog(..., foldernames, ...);
- Вам действительно нужно, чтобы список общих папок отображался в окне выбора файлов. Это не легко, но не невозможно. Посмотрите на этот пост. Проблема в том, что вы должны продлить
File
и переопределить ряд соответствующих методов. Затем подайте этот файл на ваш выбор файлов.