繁体   English   中英

读取Java中的远程文件

[英]read remote file in Java

操作系统:macbook

我想用Java阅读远程文件。 我先在本地计算机上对其进行测试。

  1. 我尝试使用File ,但是你们告诉我File只能在本地文件系统上使用,谢谢。

     public static void main(String[] args) throws URISyntaxException { URI uri = new URI("file://127.0.0.1/Users/jian/Public/logfiles/Hadoop/hdp_log1.log"); File file = new File(uri); System.out.println(file.exists()); } 
  2. 我找到了Macbook库Samba JCIFS ,通过此链接可以使用Java和Samba JCIFS访问文件 这是我的代码:

     public static void main(String[] args) throws URISyntaxException, MalformedURLException, SmbException { NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("","jian", "ywnk"); SmbFile smbFile = new SmbFile("smb://127.0.0.1/Users/jian/Public/logfiles/Hadoop/hdp_log1.log",auth); System.out.println(smbFile.exists()); } 

然后我得到了这个错误:
线程“主”中的异常jcifs.smb.SmbAuthException:登录失败:用户名未知或密码错误。
用户名与who am i在终端机中运行的who am i相同,而密码是我的登录密码。 我不知道为什么收到此用户名或密码错误。
谢谢你们的帮助。

File不能用于读取“远程文件”。 它打算用于仅在计算机本地的文件系统对象,或更确切地说,可以从本地文件系统访问的文件系统对象。

碰巧,在Unix系统上,您可以具有到远程文件系统的挂载点,例如NFS挂载或FUSE挂载。 但是,这些将始终被视为“本地”。

如果您要访问的远程资源被视为“文件”,那么File无法做到。

但是JSR 203可以。 请参阅此处的示例。

因此,您首先需要定义“远程文件”的含义。 这完全取决于您使用的协议。 File无法做到。 除非操作系统已为您排序(也就是说,如上所述,您具有NFS安装,FUSE安装或其他安装)。


对于您的错误, File构造函数警告您URI中有一个授权组件。 并且有: 127.0.0.1 由于File除了URI的路径组成部分(除了URI方案file )外什么都没有,因此可以解释该错误。

一些Java FTP库可以轻松满足您的要求。

看一下ftp4j ,它是一个用于上传和下载文件以及目录列表的好库。

Apache commons-net也是一个不错的选择。 他们也有一些非常好的示例程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM