基础-使用Java读取/写入远程文件
我从在远程Ubuntu机器上的目录中读写文件的要求开始。
首先,我编写了一个Java程序,该程序可以从远程Windows计算机(即LAN)上的共享文件夹读取,写入文件。在这里,这样的事情在我的(本地)Windows计算机上起作用:
File inputFile = new File( "\\172.17.89.76\EBook PDF");/*ignore the syntax errors, the loc is just for the idea*/
现在,当我考虑使用远程Ubuntu计算机时,显然我无法执行此类操作,因为该计算机不在LAN上( 我不确定即使在LAN上也可以做到
)。因此,我尝试了以下方法:
- 使用Jsch在两台计算机之间建立信任关系(本地-远程Linux,远程Linux-远程Linux)和使用sftp写入文件。(完成)
- 在两台机器上运行套接字-一个发送器,一个接收器(均为Java)(已完成)
- 尝试像Windows(LAN)机器的代码段一样实现I / O(未实现)
在执行所有这些操作时,我有很多查询,阅读了很多帖子等,并且我觉得我在基本原理上缺少了一些东西:
- 实现IO将需要某种类型的信任建立(在两台计算机之间)实用程序。但最后,我想编写一个给定的代码片段,而不管机器,网络等如何。
- Jsch解决方案和其他建议(通过URL使用http,ftp等)最终都使用了在远程计算机上运行的某些服务。换句话说,并不是使用Java IO来访问远程文件系统-这对我没有吸引力,因为我依靠服务而不是使用陈旧的I / O。
- Samba,SSHFS也突然出现在现场,这只会让我感到困惑。但是我不认为它们是我目标的解决方案!
重申 ,
。我的期望有效吗?
- 如果不是,为什么以及使用Java读取/写入远程文件的最佳方法是什么?
- 如果是的话,怎么实现一样!
PS:如果需要详细说明我的问题,请发表评论!
回答:
如果要访问远程计算机上的文件系统,则该计算机必须使他的文件系统可与服务一起使用。这种服务通常是后台作业,它处理传入的请求并返回响应,例如用于身份验证,授权,读取和写入。请求/响应模式的规范称为协议。众所周知的协议是Windows上的SMB(或SAMBA)或UNIX
/
LINUX上的NFS。要访问这样的远程服务,您可以在操作系统级别上安装远程文件系统,并使其在Windows上作为驱动器或在UNIX上作为安装点在本地可用。
然后,您可以像其他本地文件系统一样从Java程序访问远程文件系统。
当然,也可以编写自己的文件服务提供程序(带有自己的协议层)并在远程计算机上运行它。可以将此类套接字用作TCP /
IP的传输层。另一个好的传输层将是http协议,例如带有静态服务或基于WebDav的内容。
以上是 基础-使用Java读取/写入远程文件 的全部内容, 来源链接: utcz.com/qa/429960.html