电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Java FTP客戶端類庫比較(一)

瀏覽:130日期:2024-06-07 13:28:38
內(nèi)容: 摘要: 本文介紹了在JAVA中如何使用java現(xiàn)有的可用的庫來編寫FTP客戶端代碼。文章比較了一系列詳盡的FTP庫,從正反兩面介紹了每個庫,幫助決策者根據(jù)自己的需要選擇其中最合適的一個。另外,本文解釋了當一個庫被替換時,fagade 樣式如何幫助改變對其的管理。最后作者Jean-Pierre Norguet討論并提出了一些由于缺乏權(quán)威規(guī)范而引起的問題。(2003/4/4) 讓我們設(shè)想這樣一個情形--我們想寫一個純Java的從一個遠程計算機上運行的FTP服務器上下載文件的應用程序;我們還希望能夠過濾那些供下載的遠程文件的基本文件信息如文件名、數(shù)據(jù)或者文件大小。 盡管從頭開始寫一個FTP協(xié)議處理程序是可能的,并且也許很有趣,但這項工作也是困難、漫長并且存在著潛在的危險。因為我們不愿意親自花時間、精力、或者金錢去寫這樣的一個處理程序,所以我們轉(zhuǎn)而采用那些已經(jīng)存在的可重用的組件。并且很多的庫存在于萬維網(wǎng)(WWW)上。使用FTP客戶端庫,一個下載文件的程序可以用Java簡單地寫成這樣: FTPClient ftpClient = new FTPClient(); ftpClient.connect('ftp.foo.com', 'user01', 'pass1234'); ftpClient.download('C:Temp', 'README.txt'); // Eventually other operations here ... ftpClient.disconnect(); 找一個優(yōu)秀的適合我們需要的java FTP 客戶端庫并不像看起來那么簡單。相反這是一項非常痛苦復雜的工作。首先找到一個FTP客戶端庫需要一些時間,其次,在我們找到所有的存在的庫后,我們該選哪一個呢?每個庫都適合不同的需求。這些庫在性能上是不等價的,并且它們的設(shè)計上有著根本上的差別。每個類庫都各具特點并使用不同的術(shù)語來描述它們。因而,評價和比較FTP客戶端庫是一件困難的事情。 使用可重用組件是一種值得提倡的方法,但是在這種情況下,剛開始往往是令人氣餒的。后來或許有點慚愧:在選擇了一個好的FTP庫后,其后的工作就非常簡單了,按簡單的規(guī)則來就行了。 本文的目的是使選擇的過程更簡短、容易、有價值。首先我列舉了所有的可用的FTP客戶端庫,然后定義并描述了一系列的FTP客戶端庫應該在某方面提出的相關(guān)標準。最后,我會描述一下這些庫的性能等彼此比較的結(jié)果。所有的這些都為我們做一個快速的,可靠的,長期的決定提供了所需的東西。 FTP 的JDK支持 注釋959(RFC959)需要FTP的參考規(guī)范,SUN微系統(tǒng)在JDK中提供了一個RFC959接口,但是它是內(nèi)在的、沒有正式文檔記載的、并且沒有提高任何源代碼。盡管RFC959目前還沒有清楚的說明,它實際上是RFC1738的一個公共接口的實現(xiàn)的后續(xù)--URL規(guī)范,如圖1所示 IMG http://www.javaworld.com/javaworld/jw-04-2003/images/jw-0404-ftp1-thumb.gif[/IMG] 一個RFC1738實現(xiàn)在JDK中是作為標準被提供的,它為FTP傳輸操作完成合適的工作。它是公開的,并有正式文檔說明,而且應該提供源代碼。我們寫出如下語句來使用這個實現(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客戶端的JDK支持嚴格的遵循標準建議,但是它具有一些缺點: 首先,它和第三方FTP類庫有著根本的區(qū)別,RFC959實現(xiàn)優(yōu)于RFC1738的; 第二,大多數(shù)臺式機的FTP客戶端工具中都是基于RFC959實現(xiàn)的,很多的JAVA程序使用這些工具來連接到FTP服務器。由于喜好的原因,這些工具大部分需要采用基于RFC959的庫。 第三,URL和URLConnection類只是為通訊打開流。SUN的庫沒有為將原始的FTP服務器的回應信息組織構(gòu)成更多可用的Java的對象如String, File, RemoteFile, 或 Calendar這些提供任何直接的支持。因此我們必須寫更多的代碼來將數(shù)據(jù)寫入文件或者生成一個目錄表。 第四,正如RFC1738中的3.2.5節(jié)所說明的,“最優(yōu)化,F(xiàn)TP URLs要求在每次操作后都要將連接控制關(guān)閉。當傳輸很多小的文件的時候,這是相當不經(jīng)濟的,而且效率相當?shù)汀6遥瑥娤拗频腇TP服務器可能判斷這是一個惡意的網(wǎng)絡(luò)攻擊或濫用高層通訊,進而會禁止其進一步的訪問。 最后,它缺乏一些有用的特征。 由于上述的原因,使用一個第三者庫是更優(yōu)越的。下面的就列舉出了一些可用的第三者代替方案:庫的比較: 下面的列表簡單的概述了我在本文中比較的庫。它們都遵循FTP參考規(guī)范,下面我將列舉提供者名字和庫的名稱(斜體字表示的部分),資源中包含了到每個產(chǎn)品的站點的鏈接。為了啟動對庫的使用,我還在本文中論及了主要的FTP客戶端類。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.在我寫本文的同時,IBM正在評估將它的alphaWorks FTP Bean Suite 發(fā)布到網(wǎng)上是否合適。但是目前已經(jīng)取消了所有的用戶下載權(quán)限。 2.Jakarta Commons/Net 是Savarese NetComponents(不再發(fā)展)的一個臨時性替代。 3.JavaShop JNetBeans似乎被拋棄了,在我寫本文的同時,其網(wǎng)站已經(jīng)有一個多月沒有開了,我也從沒收到任何對我的請求支持的回訊。Matrix經(jīng)javaworld授權(quán)翻譯您可以點擊-watermark查看翻譯作者的詳細信息.加入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
標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 制氮设备-变压吸附制氮设备-制氧设备-杭州聚贤气体设备制造有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 探伤仪,漆膜厚度测试仪,轮胎花纹深度尺厂家-淄博创宇电子 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 必胜高考网_全国高考备考和志愿填报信息平台 | 温州在线网| 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 纳米二氧化硅,白炭黑,阴离子乳化剂-臻丽拾科技 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 |