1. 程式人生 > >smb讀取共享資料夾

smb讀取共享資料夾

SMB協議

SMB(Server Message Block)通訊協議是微軟(Microsoft)和英特爾(Intel)在1987年制定的協議,主要是作為Microsoft網路的通訊協議。SMB 是在會話層(session layer)和表示層(presentation layer)以及小部分應用層(application layer)的協議。
SMB使用了NetBIOS的應用程式介面 (Application Program Interface,簡稱API)。另外,它是一個開放性的協議,允許了協議擴充套件——使得它變得更大而且複雜;大約有65個最上層的作業,而每個作業都超過120個函式,甚至Windows NT也沒有全部支援到,最近微軟又把 SMB 改名為 CIFS(Common Internet File System),並且加入了許多新的特色。

示例

首先需要下載jar包jcifs-1.3.19,其中url地址的格式為:”smb://登入名:密碼@IP地址/共享資料夾名稱/”;

public static void getShareFile(){
        String url = "smb://Administrator:[email protected]/FFOutput/";
        try{
        SmbFile file = new SmbFile(url);
        if(file.exists()){
            SmbFile[] files = file.listFiles();
            for
(SmbFile f : files){ System.out.println(f.getName()); String localDir = "E:"; InputStream in = new BufferedInputStream(new SmbFileInputStream(f)); File localFile = new File(localDir + File.separator + f.getName()); OutputStream out
= new BufferedOutputStream(new FileOutputStream(localFile)); System.out.println(f.getContentLength()); byte[] buffer = new byte[1024*1024]; while(in.read(buffer) != 1){ out.write(buffer); buffer = new byte[1024*1024]; } in.close(); out.close(); } } }catch(Exception e){ e.printStackTrace(); } }

遇到的坑:

  1. url = “smb://Administrator:[email protected]/FFOutput/”; smb後面記得是://
  2. unkownHostException:可能IP地址不對或者如1的情況。
  3. Account is not known or password is bad。登入名稱或者密碼不對。
  4. User Account Restriction 密碼不能為空。詳見連結