Java如何實現文件壓縮與上傳FTP

Java文件壓縮與上傳FTP

文件壓縮

1.pom文件引入相關jar

<dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.8</version>
        </dependency>

2.壓縮文件

import cn.hutool.core.util.ZipUtil;
import java.io.File;
/**
 * @Description:
 * @author: luoy
 * @date: 2020-06-24 09:18
 */
public class FileUtil {
    
    /**
     * @desc: 
     * @author: luoy
     * @param srcPath : 被壓縮文件的源路徑
     * @param zipPath : 壓縮後文件的路徑
     * @param zipName : 壓縮後文件的名字
     * @date: 2020/6/24 9:22
     */
    private static void  zipFile(String srcPath,String zipPath,String zipName){
        ZipUtil.zip(srcPath,zipPath+ File.separator+zipName);
    }
}

Ftp下載與上傳文件

/**
 * @Description:
 * @author: luoy
 * @date: 2020-06-24 09:18
 */
public class FtpUtil {
    private static  void  ftp() throws Exception{
        //匿名登錄(無需帳號密碼的FTP服務器)
        Ftp ftp = new Ftp("172.0.0.1");
       //進入遠程目錄
        ftp.cd("/opt/upload");
       //上傳本地文件
        ftp.upload("/opt/upload", FileUtil.file("e:/test.jpg"));
        //下載遠程文件
        ftp.download("/opt/upload", "test.jpg", FileUtil.file("e:/test2.jpg"));
         //關閉連接
        ftp.close();
    }
}

Java程序FTP上傳文件

依賴架包 commons-net-3.4.jar

package ftpTest;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
/**
 * ftp 上傳工具類
 * 
 * @author yulisao
 * @createDate 2020年3月19日
 */
public class FTPUtil {
	/**
	 * 上傳文件ftp
	 * 
	 * @param host ftp地址
	 * @param port ftp端口
	 * @param userName ftp用戶名
	 * @param password ftp密碼
	 * @param localFilePath 帶上傳本地文件路徑
	 * @param ftpFilePath 遠程ftp上的存放路徑
	 */
	public static boolean ftp(String host, int port, String userName,
			String password, String localFilePath, String ftpFilePath) {
		FTPClient ftpClient = null;
		try {
			ftpClient = new FTPClient();
			// 連接FTP服務器
			ftpClient.connect(host, port);
			// 登陸FTP服務器
			ftpClient.login(userName, password);
			// 編碼
			ftpClient.setControlEncoding("UTF-8");
			// 設置文件類型為二進制(如果從FTP下載或上傳的文件是壓縮文件的時候,不進行該設置可能會導致獲取的壓縮文件解壓失敗)
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			ftpClient.changeWorkingDirectory("/");
			ftpClient.enterLocalPassiveMode();
			if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
				System.out.println("連接FTP失敗,用戶名或密碼錯誤。");
				ftpClient.disconnect();
			} else {
				System.out.println("FTP連接成功!");
				return ftpClient.storeFile(ftpFilePath, new FileInputStream(new File(localFilePath)));
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("登陸FTP失敗,請檢查FTP相關信息是否正確!" + e);
		}
		
		/*OutputStream os = null;
		FileInputStream fis = null;
		try {
			// 獲取ftp上的文件
			os = ftpClient.storeFileStream(ftpFilePath);
			fis = new FileInputStream(new File(localFilePath));
			if (os != null) {
				System.out.println("os" + os.toString());
			}
			if (fis != null) {
				System.out.println("fis" + fis.toString());
			}
			
			int length;
			byte[] bytes = new byte[1024];
			while ((length = fis.read(bytes)) != -1) {
				os.write(bytes, 0, length);
			}
			System.out.println("FTP文件上傳成功!");
		} catch (Exception e) {
			System.err.println("FTP文件上傳失敗!" + e);
		} finally {
			try {
				if (fis != null) {
					fis.close();
				}
				if (os != null) {
					os.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}*/
		
		return false;
	}
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: