Java如何實(shí)現(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{ ? ? ? ? //匿名登錄(無(wú)需帳號(hào)密碼的FTP服務(wù)器) ? ? ? ? Ftp ftp = new Ftp("172.0.0.1"); ? ? ? ?//進(jìn)入遠(yuǎn)程目錄 ? ? ? ? ftp.cd("/opt/upload"); ? ? ? ?//上傳本地文件 ? ? ? ? ftp.upload("/opt/upload", FileUtil.file("e:/test.jpg")); ? ? ? ? //下載遠(yuǎn)程文件 ? ? ? ? ftp.download("/opt/upload", "test.jpg", FileUtil.file("e:/test2.jpg")); ? ? ? ? ?//關(guān)閉連接 ? ? ? ? ftp.close(); ? ? } }
Java程序FTP上傳文件
依賴(lài)架包 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 上傳工具類(lèi) * * @author yulisao * @createDate 2020年3月19日 */ public class FTPUtil { /** * 上傳文件ftp * * @param host ftp地址 * @param port ftp端口 * @param userName ftp用戶(hù)名 * @param password ftp密碼 * @param localFilePath 帶上傳本地文件路徑 * @param ftpFilePath 遠(yuǎn)程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服務(wù)器 ftpClient.connect(host, port); // 登陸FTP服務(wù)器 ftpClient.login(userName, password); // 編碼 ftpClient.setControlEncoding("UTF-8"); // 設(shè)置文件類(lèi)型為二進(jìn)制(如果從FTP下載或上傳的文件是壓縮文件的時(shí)候,不進(jìn)行該設(shè)置可能會(huì)導(dǎo)致獲取的壓縮文件解壓失?。? ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.changeWorkingDirectory("/"); ftpClient.enterLocalPassiveMode(); if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { System.out.println("連接FTP失敗,用戶(hù)名或密碼錯(cuò)誤。"); 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失敗,請(qǐng)檢查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; } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot并發(fā)調(diào)優(yōu)之大事務(wù)和長(zhǎng)連接
這篇文章主要介紹了Springboot并發(fā)調(diào)優(yōu)之大事務(wù)和長(zhǎng)連接,重點(diǎn)分享長(zhǎng)事務(wù)以及長(zhǎng)連接導(dǎo)致的并發(fā)排查和優(yōu)化思路和示例,具有一定的參考價(jià)值,感興趣的可以了解一下2022-05-05Java下利用Jackson進(jìn)行JSON解析和序列化示例
本篇文章主要介紹了Java下利用Jackson進(jìn)行JSON解析和序列化示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02基于JSON和java對(duì)象的互轉(zhuǎn)方法
下面小編就為大家?guī)?lái)一篇基于JSON和java對(duì)象的互轉(zhuǎn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Java?CopyOnWriteArrayList源碼超詳細(xì)分析
為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類(lèi),下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11Springcloud整合stream,rabbitmq實(shí)現(xiàn)消息驅(qū)動(dòng)功能
官方定義SpringCloud?Stream?是一個(gè)構(gòu)建消息驅(qū)動(dòng)微服務(wù)的框架。我們只需要搞清楚如何與Spring?Cloud?Stream?交互就可以方便使用消息驅(qū)動(dòng)的方式。本文將通過(guò)Springcloud整合stream,rabbitmq實(shí)現(xiàn)消息驅(qū)動(dòng)功能,需要的可以參考一下2022-02-02Unity&Springboot實(shí)現(xiàn)本地登陸驗(yàn)證
本文主要介紹了Unity&Springboot服務(wù)器/本地登陸驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Java多線(xiàn)程之循環(huán)柵欄技術(shù)CyclicBarrier使用探索
這篇文章主要介紹了Java多線(xiàn)程之循環(huán)柵欄技術(shù)CyclicBarrier,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2024-01-01SpringBoot原生組件注入實(shí)現(xiàn)兩種方式介紹
SpringBoot是Spring全家桶的成員之一,基于約定優(yōu)于配置的思想(即有約定默認(rèn)值,在不配置的情況下會(huì)使用默認(rèn)值,在配置文件下配置的話(huà)會(huì)使用配置的值)。SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架2022-10-10