Java如何实现文件压缩与上传FTP

 更新时间:2022年06月20日 10:27:37   作者: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;
	}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Springboot并发调优之大事务和长连接

    Springboot并发调优之大事务和长连接

    这篇文章主要介绍了Springboot并发调优之大事务和长连接,重点分享长事务以及长连接导致的并发排查和优化思路和示例,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • Java下利用Jackson进行JSON解析和序列化示例

    Java下利用Jackson进行JSON解析和序列化示例

    本篇文章主要介绍了Java下利用Jackson进行JSON解析和序列化示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • 基于JSON和java对象的互转方法

    基于JSON和java对象的互转方法

    下面小编就为大家带来一篇基于JSON和java对象的互转方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java CopyOnWriteArrayList源码超详细分析

    Java CopyOnWriteArrayList源码超详细分析

    为了将读取的性能发挥到极致,jdk中提供了CopyOnWriteArrayList类,下面这篇文章主要给大家介绍了关于java中CopyOnWriteArrayList源码解析的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Springcloud整合stream,rabbitmq实现消息驱动功能

    Springcloud整合stream,rabbitmq实现消息驱动功能

    官方定义SpringCloud Stream 是一个构建消息驱动微服务的框架。我们只需要搞清楚如何与Spring Cloud Stream 交互就可以方便使用消息驱动的方式。本文将通过Springcloud整合stream,rabbitmq实现消息驱动功能,需要的可以参考一下
    2022-02-02
  • Unity&Springboot实现本地登陆验证

    Unity&Springboot实现本地登陆验证

    本文主要介绍了Unity&Springboot服务器/本地登陆验证,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java双冒号(::)运算符使用详解

    Java双冒号(::)运算符使用详解

    之前没用过::这个东西,今天看flink的时候发现官网有个例子用到了这个符号,本文就详细的来介绍一下Java双冒号(::)运算符使用详解,感兴趣的可以了解一下
    2021-09-09
  • Java多线程之循环栅栏技术CyclicBarrier使用探索

    Java多线程之循环栅栏技术CyclicBarrier使用探索

    这篇文章主要介绍了Java多线程之循环栅栏技术CyclicBarrier,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2024-01-01
  • SpringBoot原生组件注入实现两种方式介绍

    SpringBoot原生组件注入实现两种方式介绍

    SpringBoot是Spring全家桶的成员之一,基于约定优于配置的思想(即有约定默认值,在不配置的情况下会使用默认值,在配置文件下配置的话会使用配置的值)。SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架
    2022-10-10
  • java 图片与base64相互转化的示例

    java 图片与base64相互转化的示例

    这篇文章主要介绍了java 图片与base64相互转化的示例,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-10-10

最新评论