JCIFS


  jcifs是CIFS在JAVA中的一個實現,是samba組織負責維護開發的一個開源項目,專注於使用java語言對cifs協議的設計和實現。他們將jcifs設計成爲一個完整的,豐富的,具有可擴展能力且線程安全的客戶端庫。這一庫可以應用於各種java虛擬機訪問遵循CIFS/SMB網絡傳輸協議的網絡資源。類似於java.io.File的接口形式,在多線程的工作方式下被證明是有效而容易使用的。

  jcifs的開發方法類似java的文件操作功能,它的資源url定位:smb://{user}:{password}@{host}/{path},smb爲協議名,user和password分別爲共享文件機子的登陸名和密碼,@後面是要訪問的資源的主機名或IP地址。最後是資源的共享文件夾名稱和共享資源名。例如 smb://administrator:[email protected]/test/response.txt。

  在JAVA程序中,使用如下方式獲得一個遠程共享文件的句柄:SmbFilefile = new SmbFile("smb://guest:[email protected]/share/a.txt");這裏的句柄不僅限於遠程的共享文件,還可能是共享文件夾。isFile()方法和isDirectory()用來判斷這個句柄對應的資源的真實屬性。如果是共享文件夾,通過調用它的list()方法將獲得其中資源的列表。List方法支持過濾器機制,有兩種過濾器可供使用,一種是SmbFileFilter,另一種是SmbFilenameFilter,這兩個在jcifs中作爲接口出現,你可以根據自己的需要派生出個性化的過濾器,實現接口中的accept方法,以滿足不同業務的需求。

  SmbFileInputStream是smb文件的輸入流,它的功能是以流的方式打開一個SmbFile:SmbFileInputStream in = newSmbFileInputStream(file);SmbFileInputStream提供read方法,你可以從這個流中讀出遠程文件全部的內容。

  jcifs可從http://jcifs.samba.org/下載,下面是一個簡單的例子:

  import jcifs.smb.SmbFileInputStream;

  import jcifs.smb.SmbFile;

  public class ReadShareFile {

  public static void main(String[] args) {

  try{

  SmbFile smbFile=newSmbFile("smb://test:[email protected]/share2/aa.txt");

  //通過smbFile.isDirectory();isFile()可以判斷smbFile是文件還是文件夾

  int length=smbFile.getContentLength();//得到文件的大小

  byte buffer[] = new byte[length] ;

  SmbFileInputStream in = newSmbFileInputStream(smbFile) ; //建立smb文件輸入流

  while((in.read(buffer)) != -1){

  System.out.write(buffer);

  System.out.println(buffer.length);

  }

  in.close();

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章