远程文件读取&写操作

时间:2016-10-03 10:52:50

标签: java file

我的远程系统中有.txt文件,例如:ip = 172.16.20.1 path是/ etc / config

我如何从java

连接到这个文件

这是我的代码。

String path = "http://172.16.20.1/etc/config/file.txt";

URL url = new URL(path);
URLConnection yc = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader (yc.getInputStream()));

但是当我使用http&的路径时,我的文件并不例外如果我使用https

,则获取javax.net.ssl.SSLHandshakeException

我错过了这个文件file.txt在/ etc文件夹(Linux)

1 个答案:

答案 0 :(得分:0)

选中此项以使用commons-vfs从远程计算机读取文件,其工作正常

public static void readRemoteManifestFile( String ipAddress,String filePath,String username,String password ){

    //filePath="/usr/local/tomcat/webapps/abc/test/NavigationPanel.html";

    try {

        StandardFileSystemManager manager = new StandardFileSystemManager();
        manager.init();

        FileObject remoteFile = manager.resolveFile(createConnectionString(ipAddress, username,password,
                filePath), createDefaultOptions());
        if(!remoteFile.exists()){
            System.out.println( filePath+": no such file" );
        }else{
            Reader      inputStreamReader = new InputStreamReader(  remoteFile.getContent().getInputStream());
            char c;
              int i;
            while((i=inputStreamReader.read())!=-1)
             {
                // int to character
                c=(char)i;            
                // print char
                System.out.println("Character Read: "+c);
             }
        }

    } catch (Exception e) {
        System.out.println( "Failed to read for "+
                filePath+": "+e);
        System.out.println( "Failed to read for "+
                filePath+": "+e.getMessage());

    }


}
public static String createConnectionString(String hostName,
        String username, String password, String remoteFilePath) {
    return "sftp://" + username + ":" + password + "@" + hostName + "/" + remoteFilePath;
}

public static FileSystemOptions createDefaultOptions()
        throws FileSystemException {
    FileSystemOptions opts = new FileSystemOptions();
    SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(
            opts, "no");
    SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, false);
    SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000);
    return opts;
}

}