我首先要求在远程 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 I/O(plain 或 nio,两者都很好)编写代码,它可以简单地读取、写入远程文件,而无需使用 ftp、http 等协议或套接字发送方-接收方模型上的服务。我的期望有效吗?
- 如果不是,为什么以及我能做的最好的事情是使用 Java 读/写远程文件?
- 如果是,如何达到同样的效果!
PS:如果我需要详细说明以准确提出我的问题,请发表评论!