连接到IP地址真正的文件共享程序

时间:2012-01-23 15:37:48

标签: java ip-address file-sharing

我有这个文件共享程序,我可以从本地位置获取mye文件JFileChooser chooser = new JFileChooser(“C:// Users”),但我想使用IP地址从服务器获取文件。我试过String hostname =“192.168.1.1”;但它不起作用。当我打开文件选择器时,我会进入我自己的文件夹。一些提示?

public void download(String username) throws RemoteException, NullPointerException{                           
        JFileChooser chooser = new JFileChooser("//" + hostname + "/C://");
        chooser.setFileView(new FileView() {
            @Override
            public Boolean isTraversable(File f) {
                return (f.isDirectory() && f.getName().equals("C://")); 
            }
        });
        int returnVal = chooser.showOpenDialog(parent);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            System.out.println("You chose to open this file: " + chooser.getSelectedFile().getName());
        } try {
            String fileName = chooser.getSelectedFile().getName();
            File selectedFile = chooser.getSelectedFile();
            //String name = "//" + hostname + "/chatter";
            System.out.println(fileName);
            //ChatFront cf = (ChatFront) Naming.lookup(name);
            String ClientDirectory = getProperty + "/desktop/";
            byte[] filedata = cf.downloadFile(selectedFile);
            File file = new File(fileName);
            BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(ClientDirectory + file.getName()));
            output.write(filedata, 0, filedata.length);
            notifySelf(getUsername(), "You have now downloaded: " + file.getName() + " from the server");
            output.flush();
            output.close();
        } catch (Exception e) {
            System.err.println("FileServer exception: " + e.getMessage());
            e.printStackTrace();
        }
    }

提前致谢:)

1 个答案:

答案 0 :(得分:1)

您使用"//" + hostname + "/C://"作为JFileChooser的路径。那不是一条有效的道路。如果您尝试访问LAN上共享文件夹中的文件,其路径将显示为\\hostname\sharename

即使远程计算机上没有定义共享文件夹,也可能是名为C$的C:驱动器的“管理共享”,因此您可以使用\\hostname\C$。但您必须在该系统上作为有效用户进行身份验证才能获得访问共享的权限。 (当我试图从Java程序中获取路径时,我不确定它是如何工作的 - Windows可能会弹出远程系统的登录框,或者它可能会失败。)