Java如何實現(xiàn)文件壓縮與上傳FTP
更新時間:2022年06月20日 10:27:37 作者:luoyuan323
這篇文章主要介紹了Java如何實現(xiàn)文件壓縮與上傳FTP,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Java文件壓縮與上傳FTP
文件壓縮
1.pom文件引入相關(guān)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"));
? ? ? ? ?//關(guān)閉連接
? ? ? ? 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");
// 設(shè)置文件類型為二進制(如果從FTP下載或上傳的文件是壓縮文件的時候,不進行該設(shè)置可能會導致獲取的壓縮文件解壓失?。?
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相關(guān)信息是否正確!" + 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;
}
}以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot并發(fā)調(diào)優(yōu)之大事務和長連接
這篇文章主要介紹了Springboot并發(fā)調(diào)優(yōu)之大事務和長連接,重點分享長事務以及長連接導致的并發(fā)排查和優(yōu)化思路和示例,具有一定的參考價值,感興趣的可以了解一下2022-05-05
Java?CopyOnWriteArrayList源碼超詳細分析
為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類,下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-11-11
Springcloud整合stream,rabbitmq實現(xiàn)消息驅(qū)動功能
官方定義SpringCloud?Stream?是一個構(gòu)建消息驅(qū)動微服務的框架。我們只需要搞清楚如何與Spring?Cloud?Stream?交互就可以方便使用消息驅(qū)動的方式。本文將通過Springcloud整合stream,rabbitmq實現(xiàn)消息驅(qū)動功能,需要的可以參考一下2022-02-02
Unity&Springboot實現(xiàn)本地登陸驗證
本文主要介紹了Unity&Springboot服務器/本地登陸驗證,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
Java多線程之循環(huán)柵欄技術(shù)CyclicBarrier使用探索
這篇文章主要介紹了Java多線程之循環(huán)柵欄技術(shù)CyclicBarrier,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2024-01-01
SpringBoot原生組件注入實現(xiàn)兩種方式介紹
SpringBoot是Spring全家桶的成員之一,基于約定優(yōu)于配置的思想(即有約定默認值,在不配置的情況下會使用默認值,在配置文件下配置的話會使用配置的值)。SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架2022-10-10

