資源簡介
編寫了java如何使用ftp上傳下載文件以及文件夾:其中下載文件使用了jdk的api和apache的api兩種方式實現;下載文件,使用了jdk的api方式實現。
僅作參考,代碼已測試。

代碼片段和文件信息
package?ftpupload;
import?java.io.FileInputStream;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?org.apache.commons.net.ftp.FTP;
import?org.apache.commons.net.ftp.FTPClient;
import?org.apache.commons.net.ftp.FTPClientConfig;
import?org.apache.commons.net.ftp.FTPFile;
import?org.apache.commons.net.ftp.FTPReply;
/**
?*?使用apache?api?ftp上傳、下載文件
?*?
?*?@author?Administrator
?*?
?*/
public?class?MyApacheFtpUpload?{
private?static?FTPClient?ftpClient?=?new?FTPClient();
????private?static?String?encoding?=?System.getProperty(“file.encoding“);
????
//?獲取服務器連接
private?static?boolean?getConnection(String?ip?int?port?String?userName
String?password)?{
try?{
//?連接ftp服務器
ftpClient.connect(ip);
//?登錄
ftpClient.login(userName?password);
//為了下載中文名文件正常,客戶端需如下設置,因為:
/**
?*??1.首先apache-FtpServer?默認使用的是utf-8??
?*????查看FtpServerProtocolCodecFactory源碼可知?可知它的encode
?*????decode?都是使用的是utf-8.
?*??2.ftp命令走的是control?connection?所以客戶端要使用?ftpClient.setControlEncoding(“UTF-8“);?
?*/
ftpClient.setControlEncoding(“utf-8“);
//?獲取連接狀態
int?reply?=?ftpClient.getReplyCode();
if?(!FTPReply.isPositiveCompletion(reply))?{
ftpClient.disconnect();
throw?new?Exception(“連接服務器失敗!“);
}
return?true;
}?catch?(Exception?e)?{
e.printStackTrace();
return?false;
}
}
/**
?*?上傳文件
?*?
?*?@param?remotePath
?*????????????遠程文件名
?*?@param?localPath
?*????????????本地文件名
?*/
private?static?void?uploadFile(String?remotePath?String?localPath)?{
FileInputStream?input;
try?{
input?=?new?FileInputStream(localPath);
//以二進制形式上傳
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//為了上傳中文文件名成功,需new?String(remotePath.getBytes(encoding)“iso-8859-1“)
boolean?flag?=?ftpClient.storeFile(new?String(remotePath.getBytes(encoding)“iso-8859-1“)?input);
if?(flag)?{
System.out.println(“上傳成功“);
}?else?{
System.out.println(“上傳失敗“);
}
input.close();
ftpClient.logout();
}?catch?(FileNotFoundException?e)?{
e.printStackTrace();
}?catch?(IOException?e)?{
e.printStackTrace();
}?finally?{
if?(ftpClient.isConnected())?{
try?{
ftpClient.disconnect();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}
}
/**
?*?下載FTP服務器文件
?*?
?*?@param?remoteFileName
?*?@param?localPath
?*/
private?static?void?downloadFile(String?remoteFileName?String?localPath)?{
??????
try?{
FTPFile[]?files?=?ftpClient.listFiles();
for?(FTPFile?ftpFile?:?files)?{
if?(ftpFile.getName().equals(remoteFileName))?{
FileOutputStream?out?=?new?FileOutputStream(localPath
+?ftpFile.getName());
//為了下載中文文件名成功,需new?String(ftpFile.getName().getBytes(encoding)“iso-8859-1“)
ftpClient.retrieveFile(new?String(ftpFile.getName().getBytes(encoding)?“ISO-8859-1“)?out);
out.clo
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-03-11?10:16??ftp上傳、下載文件及目錄\
?????目錄???????????0??2014-03-10?10:48??ftp上傳、下載文件及目錄\FTP上傳、下載文件\
?????文件????????4454??2014-03-07?17:59??ftp上傳、下載文件及目錄\FTP上傳、下載文件\MyApacheFtpUpload.java
?????文件????????4447??2014-03-07?15:24??ftp上傳、下載文件及目錄\FTP上傳、下載文件\MyFtpUpload.java
?????文件????????4398??2014-03-10?10:46??ftp上傳、下載文件及目錄\FTP上傳、下載文件\ReviewFTP.java
?????文件???????47104??2014-03-07?14:31??ftp上傳、下載文件及目錄\ftp上傳、下載實例.wps
?????目錄???????????0??2014-03-11?10:16??ftp上傳、下載文件及目錄\ftp上傳、下載文件夾(jdk)\
?????文件????????8229??2014-03-11?10:02??ftp上傳、下載文件及目錄\ftp上傳、下載文件夾(jdk)\JDKUploadFileFolder.java
?????文件????????7134??2014-03-10?14:41??ftp上傳、下載文件及目錄\ftp命令.wps
評論
共有 條評論