資源簡介
Java實現與FTP服務器的數據傳輸。
其中包含了兩種實現方法。詳情請參見本人博客:
http://blog.csdn.net/lemon_tree12138/article/details/49777467

代碼片段和文件信息
package?com.ftp.sockettran;
import?org.ftp.transmission.config.Config;
import?org.ftp.transmission.tools.Tools;
import?java.io.*;
import?java.net.Socket;
import?java.util.StringTokenizer;
/**
?*?基于Socket的FTP數據傳輸測試
?*?Created?by?Naga?on?2015/11/11.
?*/
public?class?FtpSocketClient?{
????Socket?mFtpClient?=?null;
????BufferedReader?mReader?=?null;
????BufferedWriter?mWriter?=?null;
????/**
?????*?連接FTP服務器
?????*/
????public?void?connectFtp()?{
????????try?{
????????????mFtpClient?=?new?Socket(Config.FTP.HOST_IP?Config.FTP.HOST_PORT);
????????????mReader?=?new?BufferedReader(new?InputStreamReader(mFtpClient.getInputStream()));
????????????mWriter?=?new?BufferedWriter(new?OutputStreamWriter(mFtpClient.getOutputStream()));
????????????sendCommand(“USER?“?+?Config.FTP.FTP_USERNAME);
????????????sendCommand(“PASS?“?+?Config.FTP.FTP_PASSWD);
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????/**
?????*?關閉FTP的Socket連接
?????*/
????public?void?disconnectFtp()?{
????????if?(mFtpClient?==?null)?{
????????????return;
????????}
????????if?(!mFtpClient.isConnected())?{
????????????return;
????????}
????????try?{
????????????mFtpClient.close();
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????/**
?????*?獲得Socket的連接狀態
?????*?@param?socket
?????*??????????待檢查的socket
?????*?@return
?????*/
????private?boolean?socketStatus(Socket?socket)?{
????????if?(socket?==?null?||?!socket.isConnected())?{
????????????return?false;
????????}
????????return?true;
????}
????/**
?????*?向FTP服務器發送命令
?????*?@param?command
?????*??????????FTP命令
?????*?@throws?IOException
?????*/
????private?void?sendCommand(String?command)?throws?IOException?{
????????if?(Tools.StringTools.isEmpty(command))?{
????????????return;
????????}
????????if?(mFtpClient?==?null)?{
????????????return;
????????}
????????mWriter.write(command?+?“\r\n“);
????????mWriter.flush();
????}
????/**
?????*?下載文件
?????*?@param?localPath
?????*??????????本地文件路徑
?????*?@param?ftpPath
?????*??????????服務器文件路徑
?????*?@throws?IOException
?????*/
????public?void?downloadFile(String?localPath?String?ftpPath)?throws?IOException?{
????????//?進入被動模式
????????sendCommand(“PASV“);
????????//?獲得ip和端口
????????String?response?=?readNewMessage();
????????String[]?ipPort?=?getIPPort(response);
????????String?ip?=?ipPort[0];
????????int?port?=?Integer.parseInt(ipPort[1]);
????????//?建立數據端口的連接
????????Socket?dataSocket?=?new?Socket(ip?port);
????????sendCommand(“RETR?“?+?ftpPath);
????????//?下載文件前的準備
????????File?localFile?=?new?File(localPath);
????????InputStream?inputStream?=?dataSocket.getInputStream();
????????FileOutputStream?fileOutputStream?=?new?FileOutputStream(localFile);
????????//?下載文件
????????int?offset;
????????byte[]?bytes?=?new?byte[1024];
????????while?((offset?=?inputStream.read(bytes))?!=?-1)?{
????????????fileOutputSt
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\.idea\
?????文件??????????17??2015-11-11?00:21??TransmissionOnFTP\.idea\.name
?????文件?????????686??2015-11-11?00:21??TransmissionOnFTP\.idea\compiler.xm
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\.idea\copyright\
?????文件??????????76??2015-11-11?00:21??TransmissionOnFTP\.idea\copyright\profiles_settings.xm
?????文件?????????660??2015-11-11?13:49??TransmissionOnFTP\.idea\encodings.xm
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\.idea\libraries\
?????文件?????????229??2015-11-11?00:55??TransmissionOnFTP\.idea\libraries\commons_net_2_2.xm
?????文件?????????873??2015-11-11?19:06??TransmissionOnFTP\.idea\misc.xm
?????文件?????????274??2015-11-11?00:21??TransmissionOnFTP\.idea\modules.xm
?????文件????????8792??2015-11-11?00:24??TransmissionOnFTP\.idea\uiDesigner.xm
?????文件???????52533??2015-11-12?16:48??TransmissionOnFTP\.idea\workspace.xm
?????目錄???????????0??2015-11-12?16:49??TransmissionOnFTP\data\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\libs\
?????文件??????212453??2010-11-17?00:53??TransmissionOnFTP\libs\commons-net-2.2.jar
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\com\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\
?????文件????????6707??2015-11-11?10:47??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\Client.class
?????文件????????6634??2015-11-11?11:09??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\FTPRead.class
?????文件????????6116??2015-11-12?16:36??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\FtpSocketClient.class
?????文件????????6119??2015-11-11?10:47??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\Server.class
?????文件????????3718??2015-11-11?12:52??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\UpdateReceiver$DownloadThread.class
?????文件????????2533??2015-11-11?12:52??TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\UpdateReceiver.class
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\org\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\org\ftp\
?????目錄???????????0??2015-11-12?16:48??TransmissionOnFTP\out\production\TransmissionOnFTP\org\ftp\transmission\
............此處省略25個文件信息
評論
共有 條評論