[英]read remote file in Java
操作系统:macbook
我想用Java阅读远程文件。 我先在本地计算机上对其进行测试。
我尝试使用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()); }
我找到了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
)外什么都没有,因此可以解释该错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.