1.Windows7搭建FTP服務器
1.1 首先新建一個用戶,用於登錄FTP進行操作,步驟:開始\控制面板\用戶帳戶和家庭安全\用戶帳戶\管理帳戶\新建賬戶
1.2創建用戶完成后我們開始添加IIS程序服務;進入控制面板\程序\打開或關閉Windows功能
然后點擊打開在FTP服務器前面打勾,也就是把其子菜單的FTP服務和FTP擴展性打勾
1.3 創建FTP站點;進入控制面板\選擇管理工具\信息服務管理器\添加站點
界面
下一步
下一步
1.4 查看FTP是否部署成功
完成FTP服務器的搭建。
資料http://jingyan.baidu.com/article/dca1fa6f479469f1a4405292.html
2.java上傳下載FTP服務器文件
2.1 上傳文件
/**
* 上傳文件
* @param hostname ftp服務器地址
* @param port ftp服務器端口號
* @param username ftp登錄賬號
* @param password ftp登錄密碼
* @param pathname ftp服務保存地址
* @param fileName 上傳到ftp的文件名
* @param inputStream 輸入文件流
* @return
*/
public static boolean uploadFile(String hostname, int port, String username,
String password, String pathname, String fileName, InputStream inputStream){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
try{
ftpClient.connect(hostname, port); //連接ftp服務器
ftpClient.login(username, password); //登錄ftp服務器
int replyCode = ftpClient.getReplyCode(); //是否成功登錄服務器
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
flag = true;
}catch (Exception e) {
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOException e){
e.printStackTrace();
}
}
}
return true;
}
/** * 上傳文件(可對文件進行重命名) *
* @param hostname FTP服務器地址 *
* @param port FTP服務器端口號 *
* @param username FTP登錄帳號 *
* @param password FTP登錄密碼 *
* @param pathname FTP服務器保存目錄 *
* @param filename 上傳到FTP服務器后的文件名稱 *
* @param originfilename 待上傳文件的名稱(絕對地址) *
* @return */
public static boolean uploadFileFromProduction(String hostname, int port, String username,
String password, String pathname, String filename, String originfilename){
boolean flag = false;
try {
InputStream inputStream = new FileInputStream(new File(originfilename));
flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/** 上傳文件(不可以進行文件的重命名操作) *
* @param hostname FTP服務器地址 *
* @param port FTP服務器端口號 *
* @param username FTP登錄帳號 *
* @param password FTP登錄密碼 *
* @param pathname FTP服務器保存目錄 *
* @param originfilename 待上傳文件的名稱(絕對地址) *
* @return */
public static boolean uploadFileFromProduction(String hostname, int port, String username,
String password, String pathname, String originfilename){
boolean flag = false;
try {
String fileName = new File(originfilename).getName();
InputStream inputStream = new FileInputStream(new File(originfilename));
flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
2.2下載文件
/** * 下載文件 *
* @param hostname FTP服務器地址 *
* @param port FTP服務器端口號 *
* @param username FTP登錄帳號 *
* @param password FTP登錄密碼 *
* @param pathname FTP服務器文件目錄 *
* @param filename 文件名稱 *
* @param localpath 下載后的文件路徑 *
* @return */
public static boolean downloadFile(String hostname, int port, String username,
String password, String pathname, String filename, String localpath){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
try {
//連接FTP服務器
ftpClient.connect(hostname, port);
//登錄FTP服務器
ftpClient.login(username, password);
//驗證FTP服務器是否登錄成功
int replyCode = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
//切換FTP目錄
ftpClient.changeWorkingDirectory(pathname);
FTPFile[] ftpFiles = ftpClient.listFiles();
for(FTPFile file : ftpFiles){
if(filename.equalsIgnoreCase(file.getName())){
File localFile = new File(localpath + "/" + file.getName());
OutputStream os = new FileOutputStream(localFile);
ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally{
if(ftpClient.isConnected()){
try { ftpClient.logout();
} catch (IOException e) {
}
}
} return flag;
}
1.3 刪除文件
/** * 刪除文件 *
* @param hostname FTP服務器地址 *
* @param port FTP服務器端口號 *
* @param username FTP登錄帳號 *
* @param password FTP登錄密碼 *
* @param pathname FTP服務器保存目錄 *
* @param filename 要刪除的文件名稱 *
* @return */
public static boolean deleteFile(String hostname, int port, String username, String password,
String pathname, String filename){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
try {
//連接FTP服務器
ftpClient.connect(hostname, port);
//登錄FTP服務器
ftpClient.login(username, password);
//驗證FTP服務器是否登錄成功
int replyCode = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
//切換FTP目錄
ftpClient.changeWorkingDirectory(pathname);
ftpClient.dele(filename);
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally{
if(ftpClient.isConnected()){
try {
ftpClient.logout();
} catch (IOException e) {
}
}
}
return flag;
}
3.4 測試
成功。完成。
參考:http://www.jb51.net/article/98032.htm