当前位置: 首页 > 面试题库 >

基础-使用Java读取/写入远程文件

太叔乐家
2023-03-14
问题内容

我从在远程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上也可以做到
)。因此,我尝试了以下方法

  1. 使用Jsch在两台计算机之间建立信任关系(本地-远程Linux,远程Linux-远程Linux)和使用sftp写入文件。(完成)
  2. 在两台机器上运行套接字-一个发送器,一个接收器(均为Java)(已完成)
  3. 尝试像Windows(LAN)机器的代码段一样实现I / O(未实现)

在执行所有这些操作时,我有很多查询,阅读了很多帖子等,并且我觉得我在基本原理上缺少了一些东西:

  • 实现IO将需要某种类型的信任建立(在两台计算机之间)实用程序。但最后,我想编写一个给定的代码片段,而不管机器,网络等如何。
  • Jsch解决方案和其他建议(通过URL使用http,ftp等)最终都使用了在远程计算机上运行的某些服务。换句话说,并不是使用Java IO来访问远程文件系统-这对我没有吸引力,因为我依靠服务而不是使用陈旧的I / O。
  • Samba,SSHFS也突然出现在现场,这只会让我感到困惑。但是我不认为它们是我目标的解决方案!

重申 一下我想使用Java I /
O(无论是普通的还是nio的,都可以)编写代码,该代码可以简单地读取和写入远程文件,而无需使用基于ftp,http等协议或套接字发送方-接收方模型的服务

。我的期望有效吗?

  • 如果不是,为什么以及使用Java读取/写入远程文件的最佳方法是什么?
  • 如果是的话,怎么实现一样!

PS:如果需要详细说明我的问题,请发表评论!


问题答案:

如果要访问远程计算机上的文件系统,则该计算机必须使他的文件系统可与服务一起使用。这种服务通常是后台作业,它处理传入的请求并返回响应,例如用于身份验证,授权,读取和写入。请求/响应模式的规范称为协议。众所周知的协议是Windows上的SMB(或SAMBA)或UNIX
/
LINUX上的NFS。要访问这样的远程服务,您可以在操作系统级别上安装远程文件系统,并使其在Windows上作为驱动器或在UNIX上作为安装点在本地可用。

然后,您可以像其他本地文件系统一样从Java程序访问远程文件系统

当然,也可以编写自己的文件服务提供程序(带有自己的协议层)并在远程计算机上运行它。可以将此类套接字用作TCP /
IP的传输层。另一个好的传输层将是http协议,例如带有静态服务或基于WebDav的内容。



 类似资料:
  • 问题内容: 我正在寻找一种简单的方法来获取位于远程服务器上的文件。为此,我在Windows XP上创建了本地ftp服务器,现在我想为测试Applet提供以下地址: 当然,我会收到以下错误: URI方案不是“文件” 我一直在尝试其他方法来获取文件,但它们似乎没有用。我该怎么办?(我也很想执行HTTP请求) 问题答案: 您不能使用ftp开箱即用。 如果文件位于http上,则可以执行以下操作: 如果要使

  • 我有一个简单的Hadoop安装有点麻烦。我已经下载了hadoop 2.4.0并安装在一个CentOSLinux节点(虚拟机)上。我已经为apache站点(http://hadoop.apache.org/docs/r2.4.0/hadoop-project-dist/hadoop-common/SingleCluster.html)上描述的具有伪分布的单个节点配置了hadoop。它从日志中没有问题

  • 问题内容: 如何使用框架有效地从大文件读取并将大数据写入文件。 我工作,并和曾尝试类似如下: 谁能告诉我,如果我的文件大小超过2 GB,我应该遵循相同的步骤吗? 如果大量的书面操作,我想在写作时做类似的事情,该怎么办? 问题答案: 请注意,您可以像示例代码那样简单地用于复制文件,只是速度更快,而且仅一行代码。 否则,如果您已经打开了两个文件通道,则可以使用 将该通道的全部内容传输到该通道。请注意,

  • 问题内容: 我正在寻找一种无需实际下载文件即可从远程服务器上的MP3文件读取ID3标签的方法。我见过像JAudioTagger和Entagged这样的库,但是它们似乎都需要一个文件对象,而不是URL或InputStream,我知道该如何获取远程文件。是否有另一个图书馆可以做到这一点?还是有办法使用URL获取正确的对象与这些类进行交互? 问题答案: 本页介绍如何获取MP3文件的ID3 V.1 标签。

  • 我已经考虑了很长一段时间了。我正在尝试从雅虎的股票API下载数据。当您使用 API 时,它会为您提供一个文件。我一直在看opencsv,这似乎很完美,除了我想避免下载和保存文件,如果可能的话。 根据示例,OpenCSV只能从中读取。根据Oracle关于的文档,文件需要是本地的。 是否可以使用 OpenCSV 从远程文件读取而不下载?

  • 我目前正在使用Spring集成实现一些导入/导出机制,总的来说进展很顺利,但在功能方面似乎存在差距,我不了解: 有Spring集成文件轮询目录,写入文件,...我可以用它来轮询一个目录,并获得一个