[英]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.