簡體   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