<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23,comments - 12,trackbacks - 0

    [ 2004-8-10 21:49:00 | By: roof ]

    前言

    在Microsoft 網(wǎng) 絡(luò) 系 統(tǒng) 中,SMB(Server Message Block, 服 務(wù) 信 息 塊) 協(xié) 議 是Windows for Workgroup(WfWg)、Windows 95、Windows NT 和LanManager 用 來 實(shí) 現(xiàn) 共 享 局 域 網(wǎng) 上 文 件 和 打 印 機(jī) 的 協(xié) 議。 對(duì) 于 利 用Linux 和Windows NT 構(gòu) 建 的 局 域 網(wǎng) 來 說,Samba 就 是 為L(zhǎng)inux 提 供 的SMB 客 戶 程 序/ 服 務(wù) 器 程 序 的 軟 件 包, 其 功 能 是 實(shí) 現(xiàn)Windows 和Linux 互 相 共 享 對(duì) 方 的 磁 盤 空 間 和 打 印 機(jī)。通用網(wǎng)絡(luò)文件系統(tǒng)簡(jiǎn)稱CIFS,它事實(shí)上是windows平臺(tái)文件共享的標(biāo)準(zhǔn)協(xié)議,它是windows explorer,網(wǎng)絡(luò)鄰居和映射網(wǎng)絡(luò)驅(qū)動(dòng)器的底層實(shí)現(xiàn)協(xié)議。JAVA具有天然的平臺(tái)無關(guān)性,使用JAVA可以訪問任何類型的服務(wù)器或客戶機(jī)上的共享文件系統(tǒng),并且編寫的軟件產(chǎn)品可以運(yùn)行于任何平臺(tái),因此用JAVA訪問共享文件系統(tǒng)在企業(yè)應(yīng)用中具有得天獨(dú)厚的優(yōu)勢(shì)。

    JAVA中的CIFS實(shí)現(xiàn)

    Jcifs是CIFS在JAVA中的一個(gè)實(shí)現(xiàn),是samba組織本著linux的精神,負(fù)責(zé)維護(hù)開發(fā)的一個(gè)開源項(xiàng)目。這個(gè)項(xiàng)目專注于使用java語言對(duì)cifs協(xié)議的設(shè)計(jì)和實(shí)現(xiàn)。他們將jcifs設(shè)計(jì)成為一個(gè)完整的,豐富的,具有可擴(kuò)展能力且線程安全的客戶端庫。這一庫可以應(yīng)用于各種java虛擬機(jī)訪問遵循CIFS/SMB網(wǎng)絡(luò)傳輸協(xié)議的網(wǎng)絡(luò)資源。類似于java.io.File的接口形式,在多線程的工作方式下被證明是有效而容易使用的。目前jcifs的最新版本是jcifs-0.8.0b,你可以在本文最后列出的參考資料中獲得下載這一類庫的網(wǎng)址,這一版本還支持分布式的文件系統(tǒng),本文尚不涉及這一內(nèi)容。

    JAVA/CIFS程序設(shè)計(jì)

    如果你曾經(jīng)使用過java的文件操作功能,那么你將很容易掌握jcifs的開發(fā)方法。Jcifs通過類似如下的資源url定位一個(gè)資源:

    smb://guest:1234@192.168.3.56/share/a.txt

    這個(gè)url的開始部分smb:// 說明了這是一個(gè)smb類型的url;接下來的guest和1234分別是訪問共享資源的用戶名稱和密碼;@后面是要訪問的資源的主機(jī)名或IP地址。最后是資源的共享文件夾名稱和共享資源名。

    在JAVA程序中,使用如下方式獲得一個(gè)遠(yuǎn)程共享文件的句柄:

    SmbFile file = new SmbFile("smb://guest:1234@192.168.3.56/share/a.txt");

    這里的句柄不僅限于遠(yuǎn)程的共享文件,還可能是共享文件夾。isFile()方法和isDirectory()用來判斷這個(gè)句柄對(duì)應(yīng)的資源的真實(shí)屬性。如果是共享文件夾,通過調(diào)用它的list()方法將獲得其中資源的列表。List方法支持過濾器機(jī)制,有兩種過濾器可供使用,一種是SmbFileFilter,另一種是SmbFilenameFilter,這兩個(gè)在jcifs中作為接口出現(xiàn),你可以根據(jù)自己的需要派生出個(gè)性化的過濾器,實(shí)現(xiàn)接口中的accept方法,以滿足不同業(yè)務(wù)的需求。

    SmbFileInputStream是smb文件的輸入流,它的功能是以流的方式打開一個(gè)SmbFile:

    SmbFileInputStream in = new SmbFileInputStream(file);

    SmbFileInputStream提供read方法,你可以從這個(gè)流中讀出遠(yuǎn)程文件全部的內(nèi)容。

    至此,你已經(jīng)掌握了java訪問smb文件系統(tǒng)的基本方法。

    SmbFileOutputStream是smb文件的輸入流,可以向遠(yuǎn)程文件系統(tǒng)通過smb寫入數(shù)據(jù),方法與上面類似,不再贅述。

    本文后面附帶的源代碼是一個(gè)完整的例子,它完成功能很簡(jiǎn)單,就是將另一臺(tái)電腦上指定共享文件夾下的某些文件拷貝到本機(jī)的指定目錄下。通過這個(gè)例子,相信你很容易將它移植到你的開發(fā)產(chǎn)品中。

    第一步,設(shè)置運(yùn)行環(huán)境。將源代碼解壓縮,將lib目錄下的名稱為jcifs-0.8.0b.jar的文件加入到你的操作系統(tǒng)的classpath中,使示例程序運(yùn)行時(shí)能夠找到這個(gè)庫。

    第二步,在另一臺(tái)計(jì)算機(jī)上建立名稱為share的共享文件夾,用戶名為guest,密碼也為guest。假設(shè)這臺(tái)計(jì)算機(jī)的ip地址是192.168.0.2。

    第三步,在剛才建立的共享文件夾下放置兩個(gè)文件,名稱分別為hello.txt,bye.txt。文件的內(nèi)容無所謂。

    第三步,在本地計(jì)算機(jī)上的C盤跟目錄下建立一個(gè)名稱為tmp的空目錄,置此目錄可寫。

    第四步,編譯運(yùn)行Sample1.java,并運(yùn)行:

    Java Sample1 192.168.3.52 guest guest /share/ c:/tmp/

    檢查c:\tmp文件夾,會(huì)發(fā)現(xiàn)hello.txt這個(gè)文件被復(fù)制到了本機(jī),而bye.txt沒有被復(fù)制,因?yàn)镾ample1.java中使用了過濾器,僅允許名稱為hello開頭的文件被拷貝。

    后記

    對(duì)共享文件系統(tǒng)的訪問是內(nèi)部辦公系統(tǒng)等涉及到文件遷移的軟件產(chǎn)品開發(fā)過程中不可回避的課題,jCifs是一套針對(duì)這一課題完整而強(qiáng)大的解決方案,通過它你可以實(shí)現(xiàn)對(duì)任何共享文件系統(tǒng)的訪問。

    一些有用的資源和參考資料

    本文的全部源代碼,可編譯運(yùn)行,供讀者研究,下載源代碼。

    如欲了解更多關(guān)于jcifs的信息,請(qǐng)?jiān)L問其官方網(wǎng)站 http://jcifs.samba.org/。

    您可以在 http://users.erols.com/mballen/jcifs/ 獲得jcifs庫的最新版本。

    如果你對(duì)smb還不是十分熟悉,這里有一篇不錯(cuò)的文章將向你介紹什么是smb:http://samba.anu.edu.au/cifs/docs/what-is-smb.html

    posted on 2005-08-19 11:16 my java 閱讀(534) 評(píng)論(0)  編輯  收藏 所屬分類: java身份認(rèn)證轉(zhuǎn)帖
    主站蜘蛛池模板: 国产99视频精品免费观看7| 亚洲欧洲日产国码无码久久99| 久久精品夜色国产亚洲av| 国产免费人成视频尤勿视频| 亚洲成a人一区二区三区| 一边摸一边爽一边叫床免费视频| 亚洲av日韩av欧v在线天堂| 免费毛片毛片网址| 亚洲国产婷婷综合在线精品| 免费国产va在线观看| 国产亚洲美日韩AV中文字幕无码成人 | 国产99精品一区二区三区免费| 永久免费AV无码网站国产| 亚洲性猛交XXXX| 久久免费美女视频| 亚洲精品自拍视频| 九九九精品成人免费视频| 亚洲AV无码乱码在线观看裸奔 | 99视频在线看观免费| 国产精品亚洲专区在线观看| a毛片全部免费播放| 亚洲综合激情九月婷婷| 成人无码区免费视频观看 | 香蕉免费一级视频在线观看| 亚洲狠狠久久综合一区77777| 18禁男女爽爽爽午夜网站免费| 国产婷婷综合丁香亚洲欧洲| 在线a亚洲v天堂网2018| 欧洲人免费视频网站在线| 国产精品亚洲自在线播放页码| 国产99视频免费精品是看6| www.av在线免费观看| 亚洲精品成人网站在线播放| 黄a大片av永久免费| 亚洲熟女综合色一区二区三区| 国产一区二区三区免费在线观看| 中文字幕无线码免费人妻| 77777亚洲午夜久久多人| 成人午夜免费福利视频| 黄色网址大全免费| 亚洲高清无在码在线电影不卡|