国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java讀寫Windows共享文件夾的方法實例

2019-11-26 13:32:10
字體:
供稿:網(wǎng)友

項目常常需要有訪問共享文件夾的需求,例如共享文件夾存儲照片、文件等。那么如何使用Java讀寫Windows共享文件夾呢?

Java可以使用JCIFS框架對Windows共享文件夾進行讀寫,就這個框架可以讓我們像訪問本地文件夾一下訪問遠程文件夾。

JCIFS的網(wǎng)址: http://jcifs.samba.org/

JCIFS是使用純Java開發(fā)的一個開源框架,通過smb協(xié)議訪問遠程文件夾。該框架同時支持Windows共享文件夾和Linux共享文件夾,不過,Linux共享文件夾需要安裝Samba服務(wù)軟件(官網(wǎng):http://www.samba.org/)。

SMB(Server Messages Block,信息服務(wù)塊)是一種在局域網(wǎng)上共享文件和打印機的一種通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機之間提供文件及打印機等資源的共享服務(wù)。SMB協(xié)議是客戶機/服務(wù)器型協(xié)議,客戶機通過該協(xié)議可以訪問服務(wù)器上的共享文件系統(tǒng)、打印機及其他資源。通過設(shè)置“NetBIOS over TCP/IP”使得Samba不但能與局域網(wǎng)絡(luò)主機分享資源,還能與全世界的電腦分享資源。

本文主要學(xué)習(xí)一下使用Java訪問Windows共享文件夾的方法。

首先找一臺Windows機器,在任意位置創(chuàng)建文件夾:sharedFolder,并設(shè)置為共享,設(shè)置共享用戶名:share,密碼:admin。

(Windows7下設(shè)置共享文件夾方法:Windows7下設(shè)置共享文件夾方法://m.survivalescaperooms.com/os/windows/78034.html

不論是Windows還是Linux的共享文件夾,使用Java smb訪問共享文件夾的代碼都是一樣的,只是Windows與Linux配置共享文件夾的方式不一樣。

測試代碼如下:

InputStream in = null; OutputStream out = null; try {   //獲取圖片   File localFile = new File("C:/testjpg");   String remotePhotoUrl = "smb://share:admin@11/sharedFolder/"; //存放圖片的共享目錄   SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS_");   SmbFile remoteFile = new SmbFile(remotePhotoUrl + "/" + fmtformat(new Date()) + localFilegetName());   remoteFileconnect(); //嘗試連接    in = new BufferedInputStream(new FileInputStream(localFile));   out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));    byte[] buffer = new byte[4096];   int len = 0; //讀取長度   while ((len = inread(buffer, 0, bufferlength)) != -1) {     outwrite(buffer, 0, len);   }   outflush(); //刷新緩沖的輸出流 } catch (Exception e) {   String msg = "發(fā)生錯誤:" + egetLocalizedMessage();   Systemoutprintln(msg); } finally {   try {     if(out != null) {       outclose();     }     if(in != null) {       inclose();     }   }   catch (Exception e) {} } 

以上代碼中,使用了JCIFS框架提供的SmbFile類,這個類和Java的File類比較相似,使用這個類的對象,可以處理遠程文件的讀寫。使用File對象讀取本地文件,然后使用SmbFile對象寫入遠程文件。SmbFile的connect()方法可以嘗試連接遠程文件夾,如果賬號或密碼錯誤,將拋出連接異常。

當(dāng)下載遠程文件時,使用SmbFile對象讀取遠程文件即可,代碼如下:

InputStream in = null ; ByteArrayOutputStream out = null ; try {   //創(chuàng)建遠程文件對象   String remotePhotoUrl = "smb://share:admin@11/sharedFolder/testjpg";   SmbFile remoteFile = new SmbFile(remotePhotoUrl);   remoteFileconnect(); //嘗試連接   //創(chuàng)建文件流   in = new BufferedInputStream(new SmbFileInputStream(remoteFile));   out = new ByteArrayOutputStream((int)remoteFilelength());   //讀取文件內(nèi)容   byte[] buffer = new byte[4096];   int len = 0; //讀取長度   while ((len = inread(buffer, 0, bufferlength)) != - 1) {     outwrite(buffer, 0, len);   }    outflush(); //刷新緩沖的輸出流   return outtoByteArray(); } catch (Exception e) {   String msg = "下載遠程文件出錯:" + egetLocalizedMessage();   Systemoutprintln(msg); } finally {   try {     if(out != null) {       outclose();     }     if(in != null) {       inclose();     }   }   catch (Exception e) {} } 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 伽师县| 大竹县| 邵阳市| 泊头市| 宽城| 霞浦县| 泉州市| 安乡县| 东乌| 万源市| 红原县| 玉田县| 四会市| 福清市| 赤峰市| 出国| 淮安市| 五大连池市| 木里| 罗平县| 固原市| 锡林浩特市| 辽宁省| 清苑县| 两当县| 怀柔区| 萨嘎县| 海盐县| 富阳市| 五常市| 翁牛特旗| 阜新| 太谷县| 庆安县| 兰溪市| 安平县| 手机| 梁山县| 和政县| 望城县| 庆元县|