Read remote file in java which needs username and password

前端 未结 4 659
南旧
南旧 2020-11-29 09:58

I am trying to read a remote file in java

File f = new File(\"//192.168.1.120/home/hustler/file.txt\");

The remote machine needs a Username

4条回答
  •  失恋的感觉
    2020-11-29 10:15

    package com.eiq;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.commons.vfs.FileObject;
    import org.apache.commons.vfs.FileSystemOptions;
    import org.apache.commons.vfs.Selectors;
    import org.apache.commons.vfs.UserAuthenticator;
    import org.apache.commons.vfs.VFS;
    import org.apache.commons.vfs.auth.StaticUserAuthenticator;
    import org.apache.commons.vfs.impl.DefaultFileSystemConfigBuilder;
    
    public class RemoteFileDemo {
        public static void main(String[] args) throws IOException {
    
            String domain = "hyd\\all";
            String userName = "chiranjeevir";
            String password = "Acvsl@jun2013";
            String remoteFilePath = "\\\\10.0.15.74\\D$\\Suman\\host.txt";
    
    
            File f = new File("E:/Suman.txt"); //Takes the default path, else, you can specify the required path
            if (f.exists()) {
                f.delete();
            }
            f.createNewFile();
            FileObject destn = VFS.getManager().resolveFile(f.getAbsolutePath());
    
            //domain, username, password
            UserAuthenticator auth = new StaticUserAuthenticator(domain, userName, password);
            FileSystemOptions opts = new FileSystemOptions();
            DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
    
    
            FileObject fo = VFS.getManager().resolveFile(remoteFilePath, opts);
    
            System.out.println(fo.exists());
    
            //fo.createFile();
    
            destn.copyFrom(fo, Selectors.SELECT_SELF);
            destn.close();
    
            //InputStream is = new FileInputStream(f);
    
        }
    }
    

    This is a program to read a file from the remote machine and store it in our local machine as file E:/Suman.txt.

    Take care while writing the file path means instead of : we have to replace it with $ symbol, e.g.: D:\Suman\Boorla\kpl.txt is wrong, D$\\Suman\\Boorla\\kpl.txt is right.

    In the above program, you have to change the domain name, username, password and file path of the remote machine. To work with the above program we need to add the following jar files int the classpath.

    commons-vfs.jar
    commons-logging.jar
    

提交回复
热议问题