java 中的 Ftp操作

老婆昨天突然跟我說起用Java做Ftp的操作,懊惱的是,我竟然沒有看過,丟人丟人。。。
現特意寫下文字,督促自己學習:)

    對於任何Ftp服務器,都是需要遵循Ftp協議的,所以任何的ftp相關操作都是可以通過ftp協議的相關命令來完成的,對於現在的任何Ftp客戶端,實際上都只是在Ftp協議的基礎上做了一層外殼,只是外殼做的好壞,功能是否順手,界面是否美觀的問題。對於Java,處理Ftp相關操作可以用sun.net.ftp包下的類來操作。其中FtpClient包含了幾乎所有的Ftp功能,下面引了一篇文章,介紹FtpClient。這裏會發現,FtpClient雖然覆蓋了絕大部分的ftp功能,但是要刪除ftp服務器上的文件確是找不到相應的操作方法。這裏可能大多數人忽略了一個問題,FtpClient是繼承自sun.net.TransferProtocolClient的,其中TransferProtocolClient.sendServer(String)可以向服務器發送命令,看到這裏我們可以很自然的想到,FtpClient也可以向服務器直接發送相關命令來完成操作,OK,就是這樣的。
    現在回到ftp的刪除操作上來,怎麼來刪除ftp上的文件呢,用如下的代碼就可以完成了:                        String fileName = "test.txt"; // 要刪除的文件名
               client.sendServer("DELETE " + fileName);
(注:上面這段代碼,要刪除對應的文件,首先要用client.cd(String)命令進入到文件所在文件夾)其實FtpClient的實現也是通過這樣來實現的:)

//引:http://xhy0422.javaeye.com/blog/63017
sun.net.ftp.FtpClient.,該類庫主要提供了用於建立FTP連接的類。利用這些類的方法,編程人員可以遠程登錄到FTP服務器,列舉該服務器上的目錄,設置傳輸協議,以及傳送文件。FtpClient類涵蓋了幾乎所有FTP的功能,FtpClient的實例變量保存了有關建立"代理"的各種信息。下面給出了這些實例變量。public static boolean useFtpProxy這個變量用於表明FTP傳輸過程中是否使用了一個代理,因此,它實際上是一個標記,此標記若爲TRUE,表明使用了一個代理主機。public static String ftpProxyHost此變量只有在變量useFtpProxy爲TRUE時纔有效,用於保存代理主機名。public static int ftpProxyPort此變量只有在變量useFtpProxy爲TRUE時纔有效,用於保存代理主機的端口地址。FtpClient有三種不同形式的構造函數,如下所示:1、public FtpClient(String hostname,int port)此構造函數利用給出的主機名和端口號建立一條FTP連接。2、public FtpClient(String hostname)此構造函數利用給出的主機名建立一條FTP連接,使用默認端口號。3、FtpClient()此構造函數將創建一FtpClient類,但不建立FTP連接。這時,FTP連接可以用openServer方法建立。一旦建立了類FtpClient,就可以用這個類的方法來打開與FTP服務器的連接。類ftpClient提供瞭如下兩個可用於打開與FTP服務器之間的連接的方法。public void openServer(String hostname)這個方法用於建立一條與指定主機上的FTP服務器的連接,使用默認端口號。public void openServer(String host,int port)這個方法用於建立一條與指定主機、指定端口上的FTP服務器的連接。打開連接之後,接下來的工作是註冊到FTP服務器。這時需要利用下面的方法。public void login(String username,String password)此方法利用參數username和password登錄到FTP服務器。使用過Intemet的用戶應該知道,匿名FTP服務器的登錄用戶名爲anonymous,密碼一般用自己的電子郵件地址。下面是FtpClient類所提供的一些控制命令。public void cd(String remoteDirectory)該命令用於把遠程系統上的目錄切換到參數remoteDirectory所指定的目錄。public void cdUp():該命令用於把遠程系統上的目錄切換到上一級目錄。public String pwd():該命令可顯示遠程系統上的目錄狀態。public void binary():該命令可把傳輸格式設置爲二進制格式。public void ascii():該命令可把傳輸協議設置爲ASCII碼格式。public void rename(String string,String string1)該命令可對遠程系統上的目錄或者文件進行重命名操作。除了上述方法外,類FtpClient還提供了可用於傳遞並檢索目錄清單和文件的若干方法。這些方法返回的是可供讀或寫的輸入、輸出流。下面是其中一些主要的方法。public TelnetInputStream list()返回與遠程機器上當前目錄相對應的輸入流。public TelnetInputStream get(String filename)獲取遠程機器上的文件filename,藉助TelnetInputStream把該文件傳送到本地。public TelnetOutputStream put(String filename)以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠程計算機。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章