Reading a remote file using Java

前端 未结 7 1534
礼貌的吻别
礼貌的吻别 2020-12-06 04:28

I am looking for an easy way to get files that are situated on a remote server. For this I created a local ftp server on my Windows XP, and now I am trying to give my test a

7条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-06 05:30

    This worked for me, while trying to bring the file from a remote machine onto my machine.

    NOTE - These are the parameters passed to the function mentioned in the code below:

    String domain = "xyz.company.com";
    String userName = "GDD";
    String password = "fjsdfks";
    

    (here you have to give your machine ip address of the remote system, then the path of the text file (testFileUpload.txt) on the remote machine, here C$ means C drive of the remote system. Also the ip address starts with \\ , but in order to escape the two backslashes we start it \\\\ )

    String remoteFilePathTransfer = "\\\\13.3.2.33\\c$\\FileUploadVerify\\testFileUpload.txt";
    

    (here this is the path on the local machine at which the file has to be transferred, it will create this new text file - testFileUploadTransferred.txt, with the contents on the remote file - testFileUpload.txt which is on the remote system)

    String fileTransferDestinationTransfer = "D:/FileUploadVerification/TransferredFromRemote/testFileUploadTransferred.txt";
    
    import java.io.File;
    import java.io.IOException;
    
    import org.apache.commons.vfs.FileObject;
    import org.apache.commons.vfs.FileSystemException;
    import org.apache.commons.vfs.FileSystemManager;
    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 FileTransferUtility {
    
        public void transferFileFromRemote(String domain, String userName, String password, String remoteFileLocation,
                String fileDestinationLocation) {
    
            File f = new File(fileDestinationLocation);
            FileObject destn;
            try {
                FileSystemManager fm = VFS.getManager();
    
                destn = VFS.getManager().resolveFile(f.getAbsolutePath());
    
                if(!f.exists())
                {
                    System.out.println("File : "+fileDestinationLocation +" does not exist. transferring file from : "+ remoteFileLocation+" to: "+fileDestinationLocation);
                }
                else
                    System.out.println("File : "+fileDestinationLocation +" exists. Transferring(override) file from : "+ remoteFileLocation+" to: "+fileDestinationLocation);
    
                UserAuthenticator auth = new StaticUserAuthenticator(domain, userName, password);
                FileSystemOptions opts = new FileSystemOptions();
                DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
                FileObject fo = VFS.getManager().resolveFile(remoteFileLocation, opts);
                System.out.println(fo.exists());
                destn.copyFrom(fo, Selectors.SELECT_SELF);
                destn.close();
                if(f.exists())
                {
                    System.out.println("File transfer from : "+ remoteFileLocation+" to: "+fileDestinationLocation+" is successful");
                }
            }
    
            catch (FileSystemException e) {
                e.printStackTrace();
            }
    
        }
    
    }
    

提交回复
热议问题