0

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

如何才能做到这一点?

4

5 回答 5

2

假设“远程 linux 服务器”是指“远程 linux shell ”,您应该使用像JSch这样的 ssh 库。您可以在此处找到文件下载示例。

于 2012-09-11T09:19:21.187 回答
0

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

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

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

于 2012-09-11T09:13:27.293 回答
0

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

图书馆的特点包括:

  • 读取 known_hosts 文件以进行主机密钥验证
  • 公钥、密码和键盘交互认证
  • 命令、子系统和外壳通道
  • 本地和远程端口转发
  • scp + 完整的 sftp 版本 0-3 实现
于 2012-09-11T09:19:44.150 回答
0

这取决于文件如何可用。是通过 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

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

于 2012-09-11T09:34:30.413 回答
0

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

例子

于 2012-09-11T10:47:51.557 回答