Java如何实现文件压缩与上传FTP
作者:luoyuan323
这篇文章主要介绍了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; } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。