OS:macbook
我想用Java读取远程文件。 我先在我的本地计算机上测试它。
我尝试使用break
,但是你们告诉我File
只能用于本地文件系统,谢谢。
File
我从此链接access to file using Java with Samba JCIFS找到了Macbook的库, Samba JCIFS 。这是我的代码:
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());
}
然后我收到了这个错误:
线程“main”中的异常jcifs.smb.SmbAuthException:登录失败:未知的用户名或密码错误。
用户名与我在终端中运行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());
}
相同,密码是我的登录密码。我不知道为什么我的用户名或密码错误
谢谢你们的帮助。
答案 0 :(得分:0)
File
不能用于读取"远程文件"。它用于文件系统对象,这些对象只对机器是本地的,或者更精确,可以从本地文件系统访问。
在Unix系统中,您可以将挂载点安装到远程文件系统,例如NFS挂载或FUSE挂载。但那些将永远被视为"本地"。
如果你想要的是访问远程资源以被视为"文件",那么File
就无法做到。
但JSR 203可以。有关示例,请参阅here。
因此,您首先需要定义"远程文件"的含义。这完全取决于您使用的协议。并File
无法做到。除非操作系统为您排序(即,如上所述,您有NFS挂载,FUSE挂载或其他)。
关于您的错误,File
构造函数会警告您URI中存在权限组件;并且有:127.0.0.1
。由于File
只需要URI的路径组件(除了URI方案file
之外),这就解释了错误。
答案 1 :(得分:0)