国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java FTP客戶(hù)端類(lèi)庫(kù)比較(一)

瀏覽:116日期:2024-06-07 13:28:38
內(nèi)容: 摘要: 本文介紹了在JAVA中如何使用java現(xiàn)有的可用的庫(kù)來(lái)編寫(xiě)FTP客戶(hù)端代碼。文章比較了一系列詳盡的FTP庫(kù),從正反兩面介紹了每個(gè)庫(kù),幫助決策者根據(jù)自己的需要選擇其中最合適的一個(gè)。另外,本文解釋了當(dāng)一個(gè)庫(kù)被替換時(shí),fagade 樣式如何幫助改變對(duì)其的管理。最后作者Jean-Pierre Norguet討論并提出了一些由于缺乏權(quán)威規(guī)范而引起的問(wèn)題。(2003/4/4) 讓我們?cè)O(shè)想這樣一個(gè)情形--我們想寫(xiě)一個(gè)純Java的從一個(gè)遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的FTP服務(wù)器上下載文件的應(yīng)用程序;我們還希望能夠過(guò)濾那些供下載的遠(yuǎn)程文件的基本文件信息如文件名、數(shù)據(jù)或者文件大小。 盡管從頭開(kāi)始寫(xiě)一個(gè)FTP協(xié)議處理程序是可能的,并且也許很有趣,但這項(xiàng)工作也是困難、漫長(zhǎng)并且存在著潛在的危險(xiǎn)。因?yàn)槲覀儾辉敢庥H自花時(shí)間、精力、或者金錢(qián)去寫(xiě)這樣的一個(gè)處理程序,所以我們轉(zhuǎn)而采用那些已經(jīng)存在的可重用的組件。并且很多的庫(kù)存在于萬(wàn)維網(wǎng)(WWW)上。使用FTP客戶(hù)端庫(kù),一個(gè)下載文件的程序可以用Java簡(jiǎn)單地寫(xiě)成這樣: FTPClient ftpClient = new FTPClient(); ftpClient.connect('ftp.foo.com', 'user01', 'pass1234'); ftpClient.download('C:Temp', 'README.txt'); // Eventually other operations here ... ftpClient.disconnect(); 找一個(gè)優(yōu)秀的適合我們需要的java FTP 客戶(hù)端庫(kù)并不像看起來(lái)那么簡(jiǎn)單。相反這是一項(xiàng)非常痛苦復(fù)雜的工作。首先找到一個(gè)FTP客戶(hù)端庫(kù)需要一些時(shí)間,其次,在我們找到所有的存在的庫(kù)后,我們?cè)撨x哪一個(gè)呢?每個(gè)庫(kù)都適合不同的需求。這些庫(kù)在性能上是不等價(jià)的,并且它們的設(shè)計(jì)上有著根本上的差別。每個(gè)類(lèi)庫(kù)都各具特點(diǎn)并使用不同的術(shù)語(yǔ)來(lái)描述它們。因而,評(píng)價(jià)和比較FTP客戶(hù)端庫(kù)是一件困難的事情。 使用可重用組件是一種值得提倡的方法,但是在這種情況下,剛開(kāi)始往往是令人氣餒的。后來(lái)或許有點(diǎn)慚愧:在選擇了一個(gè)好的FTP庫(kù)后,其后的工作就非常簡(jiǎn)單了,按簡(jiǎn)單的規(guī)則來(lái)就行了。 本文的目的是使選擇的過(guò)程更簡(jiǎn)短、容易、有價(jià)值。首先我列舉了所有的可用的FTP客戶(hù)端庫(kù),然后定義并描述了一系列的FTP客戶(hù)端庫(kù)應(yīng)該在某方面提出的相關(guān)標(biāo)準(zhǔn)。最后,我會(huì)描述一下這些庫(kù)的性能等彼此比較的結(jié)果。所有的這些都為我們做一個(gè)快速的,可靠的,長(zhǎng)期的決定提供了所需的東西。 FTP 的JDK支持 注釋959(RFC959)需要FTP的參考規(guī)范,SUN微系統(tǒng)在JDK中提供了一個(gè)RFC959接口,但是它是內(nèi)在的、沒(méi)有正式文檔記載的、并且沒(méi)有提高任何源代碼。盡管RFC959目前還沒(méi)有清楚的說(shuō)明,它實(shí)際上是RFC1738的一個(gè)公共接口的實(shí)現(xiàn)的后續(xù)--URL規(guī)范,如圖1所示 IMG http://www.javaworld.com/javaworld/jw-04-2003/images/jw-0404-ftp1-thumb.gif[/IMG] 一個(gè)RFC1738實(shí)現(xiàn)在JDK中是作為標(biāo)準(zhǔn)被提供的,它為FTP傳輸操作完成合適的工作。它是公開(kāi)的,并有正式文檔說(shuō)明,而且應(yīng)該提供源代碼。我們寫(xiě)出如下語(yǔ)句來(lái)使用這個(gè)實(shí)現(xiàn): URL url = new URL('ftp://user01:pass1234@ftp.foo.com/README.txt;type=i'); URLConnection urlc = url.openConnection(); InputStream is = urlc.getInputStream(); // 下載 OutputStream os = urlc.getOutputStream(); // 上傳 FTP客戶(hù)端的JDK支持嚴(yán)格的遵循標(biāo)準(zhǔn)建議,但是它具有一些缺點(diǎn): 首先,它和第三方FTP類(lèi)庫(kù)有著根本的區(qū)別,RFC959實(shí)現(xiàn)優(yōu)于RFC1738的; 第二,大多數(shù)臺(tái)式機(jī)的FTP客戶(hù)端工具中都是基于RFC959實(shí)現(xiàn)的,很多的JAVA程序使用這些工具來(lái)連接到FTP服務(wù)器。由于喜好的原因,這些工具大部分需要采用基于RFC959的庫(kù)。 第三,URL和URLConnection類(lèi)只是為通訊打開(kāi)流。SUN的庫(kù)沒(méi)有為將原始的FTP服務(wù)器的回應(yīng)信息組織構(gòu)成更多可用的Java的對(duì)象如String, File, RemoteFile, 或 Calendar這些提供任何直接的支持。因此我們必須寫(xiě)更多的代碼來(lái)將數(shù)據(jù)寫(xiě)入文件或者生成一個(gè)目錄表。 第四,正如RFC1738中的3.2.5節(jié)所說(shuō)明的,“最優(yōu)化,F(xiàn)TP URLs要求在每次操作后都要將連接控制關(guān)閉。當(dāng)傳輸很多小的文件的時(shí)候,這是相當(dāng)不經(jīng)濟(jì)的,而且效率相當(dāng)?shù)汀6遥瑥?qiáng)限制的FTP服務(wù)器可能判斷這是一個(gè)惡意的網(wǎng)絡(luò)攻擊或?yàn)E用高層通訊,進(jìn)而會(huì)禁止其進(jìn)一步的訪問(wèn)。 最后,它缺乏一些有用的特征。 由于上述的原因,使用一個(gè)第三者庫(kù)是更優(yōu)越的。下面的就列舉出了一些可用的第三者代替方案:庫(kù)的比較: 下面的列表簡(jiǎn)單的概述了我在本文中比較的庫(kù)。它們都遵循FTP參考規(guī)范,下面我將列舉提供者名字和庫(kù)的名稱(chēng)(斜體字表示的部分),資源中包含了到每個(gè)產(chǎn)品的站點(diǎn)的鏈接。為了啟動(dòng)對(duì)庫(kù)的使用,我還在本文中論及了主要的FTP客戶(hù)端類(lèi)。1. JScape, iNet Factory: com.jscape.inet.ftp.Ftp 2. /n software, IP*Works: ipworks.Ftp 3. Enterprise Distributed Technologies, Java FTP Client Library: com.enterprisedt.net.ftp.FTPClient 4. IBM alphaWorks, FTP Bean Suite: com.ibm.network.ftp.protocol.FTPProtocol 5. SourceForge, JFtp: net.sf.jftp.net.FtpConnection 6. The Jakarta Project, Jakarta Commons/Net: org.apache.commons.net.ftp.FTPClient 7. JavaShop JNetBeans: jshop.jnet.FTPClient 8. Sun, JDK: sun.net.ftp.FtpClient 9. Florent Cueto, JavaFTP API: com.cqs.ftp.FTP 10.Bea Petrovicova, jFTP: cz.dhl.ftp.Ftp 11.The Globus Project, Java CoG Kit: org.globus.io.ftp.FTPClient 注: 1.在我寫(xiě)本文的同時(shí),IBM正在評(píng)估將它的alphaWorks FTP Bean Suite 發(fā)布到網(wǎng)上是否合適。但是目前已經(jīng)取消了所有的用戶(hù)下載權(quán)限。 2.Jakarta Commons/Net 是Savarese NetComponents(不再發(fā)展)的一個(gè)臨時(shí)性替代。 3.JavaShop JNetBeans似乎被拋棄了,在我寫(xiě)本文的同時(shí),其網(wǎng)站已經(jīng)有一個(gè)多月沒(méi)有開(kāi)了,我也從沒(méi)收到任何對(duì)我的請(qǐng)求支持的回訊。Matrix經(jīng)javaworld授權(quán)翻譯您可以點(diǎn)擊-watermark查看翻譯作者的詳細(xì)信息.加入matrix,與java共舞: www.matrix.org.cn Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久久精选视频 | 久草新免费 | 国产日本欧美在线观看 | 亚洲 中文 欧美 日韩 在线人 | 美国毛片一级视频在线aa | 亚州不卡 | 日本高清va不卡视频在线观看 | 国内精品久久久久久网站 | 大毛片a大毛片 | 在线国产一区二区 | 久草视频免费在线 | 日本高清视频一区二区 | 久久99精品久久久久久野外 | 国产精品免费久久久免费 | 成人国产精品一级毛片视频 | 久久国产成人精品 | 国产成人高清精品免费5388密 | 99久久综合狠狠综合久久一区 | 日本国产最新一区二区三区 | 日本免费高清视频二区 | 亚洲图片 自拍 | 久章草视频| 99ri在线视频 | 91精品国产高清久久久久 | 88av视频在线观看 | 亚洲经典在线 | 91最新91精品91蝌蚪 | 操她视频网站 | 美女脱了内裤张开腿让男人桶网站 | 久久99九九99九九精品 | 欧美一区二区在线观看视频 | 成人精品一区二区不卡视频 | 亚洲加勒比久久88色综合 | 久久院线| 131美女爱做免费毛片 | 久久免费视频网 | 国产国语对白一级毛片 | 久久综合给合久久狠狠狠97色69 | 欧美精品成人一区二区在线观看 | 国产一区二区在线播放 | 三级com|