程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA技巧完成上傳下載文件到FTP辦事器(完全)

JAVA技巧完成上傳下載文件到FTP辦事器(完全)

編輯:關於JAVA

JAVA技巧完成上傳下載文件到FTP辦事器(完全)。本站提示廣大學習愛好者:(JAVA技巧完成上傳下載文件到FTP辦事器(完全))文章只能為提供參考,不一定能成為您想要的結果。以下是JAVA技巧完成上傳下載文件到FTP辦事器(完全)正文


詳細具體引見請看下文:

在應用文件停止交互數據的運用來講,應用FTP辦事器是一個很好的選擇。本文應用Apache Jakarta Commons Net(commons-net-3.3.jar) 基於FileZilla Server辦事器完成FTP辦事器上文件的上傳/下載/刪除等操作。

關於FileZilla Server辦事器的具體搭建設置裝備擺設進程,概況請見 FileZilla Server裝置設置裝備擺設教程 。之前有同伙說,上傳年夜文件(幾百M以上的文件)到FTP辦事器時會重現沒法重定名的成績,但自己親測上傳2G的文件到FileZilla Server都沒有該成績,同伙們可以寧神應用該代碼。

FavFTPUtil.Java

package com.favccxx.favsoft.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class FavFTPUtil {
 
 /**
 * 上傳文件(可供Action/Controller層應用)
 * @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 {
 //銜接FTP辦事器
 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 flag;
 }
 
 
 /**
 * 上傳文件(可對文件停止重定名)
 * @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;
 }
 
 
 /**
 * 刪除文件
 * @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;
 }
 
 /**
 * 下載文件
 * @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;
 }

}
FavFTPUtilTest.java

package com.favccxx.favsoft.util;

import junit.framework.TestCase;

public class FavFTPTest extends TestCase {
 
 public void testFavFTPUtil(){
 String hostname = "127.0.0.1";
 int port = 21;
 String username = "business";
 String password = "business";
 String pathname = "business/ebook"; 
 String filename = "big.rar"; 
 String originfilename = "C:\\Users\\Downloads\\Downloads.rar";
 FavFTPUtil.uploadFileFromProduction(hostname, port, username, password, pathname, filename, originfilename);
// String localpath = "D:/";
 
// FavFTPUtil.downloadFile(hostname, port, username, password, pathname, filename, localpath);
 }

}

以上就是JAVA經由過程FTP上傳下載文件的完全代碼,願望對年夜家有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved