JFileChooser - 以\\ machineIp浏览到共享路径

时间:2015-08-04 11:24:05

标签: java swing jfilechooser

我在Swing应用程序中使用JFileChooser。用户需要浏览到共享路径,例如\\ ip \(例如\\ 100.150.200.222 \ - 在Windows资源管理器中,此路径是可访问的,并包含该计算机上的所有共享文件夹)。 当用户键入\\ ip \并单击“OPEN”时,文件选择器窗口将关闭。 相反,如果用户在远程系统中提供任何共享文件夹名称,则文件选择器将显示文件(例如\\ 100.150.200.222 \ sharedFolder \)。 请帮助克服这个问题,以便用户可以浏览到\\ ip \

1 个答案:

答案 0 :(得分:2)

  

\\100.150.200.222\ - 在Windows资源管理器中,此路径可以访问,并包含该计算机上的所有共享文件夹

确实,但\\100.150.200.222不是文件夹本身,这就是文件选择器不起作用的原因。要在此IP地址列出共享文件夹,解决方案是使用此帖子中建议的第三方库:Shares Under IP

String[] foldernames = new SmbFile("smb://100.150.200.222/").list();

然后我看到三种可能的解决方案让用户选择一个文件:

  1. 您知道此IP地址只有一个相关的共享文件夹:
  2. 然后,这非常简单:使用JCIFS获取第一个共享文件夹的名称,并在文件选择器中打开它。

    File folder = new File("\\100.150.200.222\"+foldernames[0]);
    new JFileChooser(folder).showSaveDialog(null);
    
    1. 让用户选择带有中间对话框的共享文件夹。从用户体验的角度来看,这并不是很好,但可以使用JOptionPane.showInputDialog()在一行中完成。
    2. String foldername = JOptionPane.showInputDialog(..., foldernames, ...);

      1. 确实需要共享文件夹列表才能显示在文件选择器中。这并不容易,但并非不可能。看看this post。挑战在于您必须扩展File并覆盖许多相关方法。然后将此文件提供给文件选择器。