smb讀取共享資料夾
阿新 • • 發佈:2018-11-22
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();
}
}
遇到的坑:
- url = “smb://Administrator:[email protected]/FFOutput/”; smb後面記得是://
- unkownHostException:可能IP地址不對或者如1的情況。
- Account is not known or password is bad。登入名稱或者密碼不對。
- User Account Restriction 密碼不能為空。詳見連結