【问题标题】:how to get remote linux server file inputstream如何获取远程linux服务器文件输入流
【发布时间】:2012-09-11 09:05:00
【问题描述】:

我正在尝试读取远程 linux 服务器中的文件。但是我不知道如何使用java获取文件的输入流。

如何做到这一点?

【问题讨论】:

    标签: java linux ssh


    【解决方案1】:

    假设“remote linux server”你的意思是“remote linux shell”,你应该使用像JSch这样的ssh库。您可以找到文件下载示例here

    【讨论】:

      【解决方案2】:

      也许 SSHJ 可以帮助你? https://github.com/shikhar/sshj

      该库的功能包括:

      • 读取 known_hosts 文件以验证主机密钥
      • 公钥、密码和键盘交互式身份验证
      • 命令、子系统和外壳通道
      • 本地和远程端口转发
      • scp + 完整的 sftp 版本 0-3 实现

      【讨论】:

        【解决方案3】:

        假设您有一个与服务器的有效连接并可以访问该文件,您可以使用该文件的 URI 创建一个 File 对象:

        File f = new File(uri);
        FileInputStream fis = new FileInputStream(f);
        

        URI 应该是文件的 URI,例如“file://server/path/to/file”。 另请参阅Javadoc for File(URI)

        【讨论】:

        • 我不知道应该是什么uri。是文件的路径吗?例如:“/root/files/chat.log”?
        【解决方案4】:

        这取决于文件如何可用。是通过 HTTP、FTP、SFTP 还是通过您自己编写的服务器?

        如果你想通过 HTTP 获取文件,你可以使用这个:

        HttpURLConnection connec = (HttpURLConnection)new URL("http://host/file").openConnection();
        if(connec.getResponseCode() != connec.HTTP_OK)
        {
            System.err.println("Not OK");
            return;
        }
        System.out.println("length = " + connec.getContentLength());
        System.out.println("Type = " + connec.getContentType());
        InputStream in = connec.getInputStream();
        //Now you can read the file content with in
        

        还有 Jsch 库,非常适合 SFTP / SCP

        【讨论】:

          【解决方案5】:

          您可以使用任何 ssh java lib,如其他答案中所述,或将文件挂载目录作为 NFS 共享文件夹。挂载后,您可以使用常用的 java API 来访问文件。

          Example

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-12
            • 2010-09-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多