Java 实现 FTP 服务

Java 操作ftp 的工具类 ,亲测有效 Java 操作ftp 的工具类。 阅读详情

1、FTP简介

        FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。



2、实例

2.1、添加依赖

       <!-- 文件上传组件 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>

2.2测试类

package testController;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.chenzhengyou.common.util.FtpUtil;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;

/**
 * @auther 陈郑游
 * @create 2016-11-23-19:27
 * @功能描述 图片测试
 * @公司地址
 */

public class FtpController {

    //主机地址  端口号
    private String HOSTNAME = "127.0.0.1";
    private Integer PORT = 21;
    //本地图片路径
    private String FilePackage = "F:\\Programming_Package\\IMG_3733_1.JPG";

    //用户名 密码
    private String USERNAME = "czy";
    private String PASSWORD = "czy";

	/**
     * 无工具类图片测试
     * */
	@Test
	public void testFtp() throws Exception {
		//创建一个FtpClient对象
		FTPClient ftpClient = new FTPClient();
		//创建ftp连接。默认是21端口
		ftpClient.connect(HOSTNAME,PORT);
		//登录ftp服务器,使用用户名和密码
		ftpClient.login(USERNAME,PASSWORD);
		//上传文件。
		//读取本地文件
		FileInputStream inputStream = new FileInputStream(new File(FilePackage));
		//设置上传的路径
		ftpClient.changeWorkingDirectory("/myftp/images");
		//修改上传文件的格式
		ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
		//第一个参数:服务器端文档名
		//第二个参数:上传文档的inputStream
		ftpClient.storeFile("hello.jpg", inputStream);
		//关闭连接
		ftpClient.logout();
	}
}


2.3、FTP工具类上传图片


工具类

package org.chenzhengyou.common.util;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

import java.io.*;

/**
 * @auther 陈郑游
 * @create 2016-11-23-19:27
 * @功能描述 ftp工具类
 * @公司地址
 */
public class FtpUtil {

	/** 
	 * Description: 向FTP服务器上传文件 
	 * @param host FTP服务器hostname 
	 * @param port FTP服务器端口 
	 * @param username FTP登录账号 
	 * @param password FTP登录密码 
	 * @param basePath FTP服务器基础目录
	 * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
	 * @param filename 上传到FTP服务器上的文件名 
	 * @param input 输入流 
	 * @return 成功返回true,否则返回false 
	 */  
	public static boolean uploadFile(String host, int port, String username,
	                                 String password, String basePath,
			String filePath, String filename, InputStream input) {

		boolean result = false;
		FTPClient ftp = new FTPClient();
		try {
			int reply;
			ftp.connect(host, port);// 连接FTP服务器
			// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
			ftp.login(username, password);// 登录
			reply = ftp.getReplyCode();
			if (!FTPReply.isPositiveCompletion(reply)) {
				ftp.disconnect();
				return result;
			}
			//切换到上传目录
			if (!ftp.changeWorkingDirectory(basePath+filePath)) {
				//如果目录不存在创建目录
				String[] dirs = filePath.split("/");
				String tempPath = basePath;
				for (String dir : dirs) {
					if (null == dir || "".equals(dir)) continue;
					tempPath += "/" + dir;
					if (!ftp.changeWorkingDirectory(tempPath)) {
						if (!ftp.makeDirectory(tempPath)) {
							return result;
						} else {
							ftp.changeWorkingDirectory(tempPath);
						}
					}
				}
			}
			//设置上传文件的类型为二进制类型
			ftp.setFileType(FTP.BINARY_FILE_TYPE);
			//上传文件
			if (!ftp.storeFile(filename, input)) {
				return result;
			}
			input.close();
			ftp.logout();
			result = true;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (ftp.isConnected()) {
				try {
					ftp.disconnect();
				} catch (IOException ioe) {
				}
			}
		}
		return result;
	}
	
	/** 
	 * Description: 从FTP服务器下载文件 
	 * @param host FTP服务器hostname 
	 * @param port FTP服务器端口 
	 * @param username FTP登录账号 
	 * @param password FTP登录密码 
	 * @param remotePath FTP服务器上的相对路径 
	 * @param fileName 要下载的文件名 
	 * @param localPath 下载后保存到本地的路径 
	 * @return 
	 */  
	public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
			String fileName, String localPath) {
		boolean result = false;
		FTPClient ftp = new FTPClient();
		try {
			int reply;
			ftp.connect(host, port);
			// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
			ftp.login(username, password);// 登录
			reply = ftp.getReplyCode();
			if (!FTPReply.isPositiveCompletion(reply)) {
				ftp.disconnect();
				return result;
			}
			ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
			FTPFile[] fs = ftp.listFiles();
			for (FTPFile ff : fs) {
				if (ff.getName().equals(fileName)) {
					File localFile = new File(localPath + "/" + ff.getName());

					OutputStream is = new FileOutputStream(localFile);
					ftp.retrieveFile(ff.getName(), is);
					is.close();
				}
			}

			ftp.logout();
			result = true;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (ftp.isConnected()) {
				try {
					ftp.disconnect();
				} catch (IOException ioe) {
				}
			}
		}
		return result;
	}
}

实现类

package testController;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.chenzhengyou.common.util.FtpUtil;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;

/**
 * @auther 陈郑游
 * @create 2016-11-23-19:27
 * @功能描述 图片测试
 * @公司地址
 */

public class FtpController {

    //主机地址  端口号
    private String HOSTNAME = "127.0.0.1";
    private Integer PORT = 21;
    //本地图片路径
    private String FilePackage = "F:\\Programming_Package\\IMG_3733_1.JPG";

    //用户名 密码
    private String USERNAME = "czy";
    private String PASSWORD = "czy";

	/**
     * 有工具类测试
     * */
	@Test
	public void testUtil() throws Exception {
		FileInputStream inputStream = new FileInputStream(new File("F:\\Programming_Package\\IMG_3733_1.JPG"));
		FtpUtil.uploadFile(HOSTNAME,PORT, USERNAME, PASSWORD, "/myftp/images", "/2016/11/24", "hello.jpg", inputStream);
	}
}



JAVA使用SFTP和FTP两种方式连接服务器 JAVA SFTP和FTP 阅读详情

相关推荐

Java FTP 实现跨服务器文件上传下载

Java FTP 实现跨服务器文件上传下载! 实现原理:服务器端安装 Serv-U 服务器,环境配置好后通过Java程序访问(读、写、删除等操作)目录。

FOR_CHINA2012的专栏 1万+

用Java实现FTP

然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。案例一:查看指定目录的文件信息。

qq_51593012的博客 5613

Java实现FTP服务器文件交互指南

本文还有配套的精品资源,点击获取 简介:Java访问FTPSever是开发文件交换应用程序的常见需求。本博客探讨如何利用Java标准库或第三方库实现该功能。文章重点介绍了两个关键依赖库: commons-net-1.4.1.jar 和 jakarta-oro-2.0.8.jar ,前者提供丰富的FTP客户端API,支持文件上传、下载等操作;后者提...

weixin_30700095的博客 1973

Java连接FTP服务器,并使用ftp连接池进行文件操作

使用Java连接FTP服务器进行文件操作,包含文件和文件夹上传、下载、获取文件夹内文件名、文件数量、将文件夹打包成zip在浏览器下载等接口,并且使用FTP连接池降低资源消耗,提高响应速率。

qq_41481924的博客 5686

AI辅助发明专利撰写实战:30分钟高效生成高质量技术专利文档

在技术专利撰写领域,尤其是软件、算法或系统架构相关的发明专利,如何将创新的技术构思快速、规范地转化为符合《专利法》要求的申请文件,是许多开发者和技术团队面临的共同挑战。传统的人工撰写方式不仅耗时耗力,对撰写人的法律和技术双重背景要求极高,还容易因格式或术语不规范导致审查意见增多。本文将分享一套利用 AI 辅助工具,系统化、高效率地完成一篇高质量发明专利说明书撰写的实战流程。通过清晰的步骤拆解、可复制的提示词(Prompt)工程以及关键注意事项,即使是首次接触专利撰写的开发者,也能在短时间内掌握从技术方案梳理

子夜轻风 963

Nacos 2.3.2与PostgreSQL的Docker化部署实战

本文详细介绍了Nacos 2.3.2与PostgreSQL的Docker化部署实战,包括环境准备、数据库配置、镜像获取与导入、容器部署及常见问题排查。通过Docker容器化技术,结合PostgreSQL的稳定性和扩展性,为微服务架构提供高效的服务发现和配置管理解决方案。

k5l6m的博客 284

Java实现FTP文件上传和下载

一、背景 二、maven依赖 三、FTP工具类 3.1、主动模式(PORT) 3.2、被动模式(PASV) 四、验证 4.1、dos下操作FTP 4.2、FTP文件上传 4.3、FTP文件下载

嘉禾嘉宁papa 2万+

UE4项目迁移指南:如何无缝导入外部.uasset文件并保持材质关联

本文详细解析了将外部.uasset文件无缝导入UE4项目的专业方法。针对手动复制文件时常见的材质关联丢失问题,提供了使用引用查看器进行诊断和修复的实用技巧,并推荐使用引擎内置的“迁移”功能确保资源依赖关系的完整性,帮助开发者高效整合项目资源。

t8u9v0的博客 1047

Java实现简单的FTP服务器

前言 FTP协议 工作机制概要 FTP主要命令 响应信息 实践过程 实现的FTP命令 实现思想 遇到的问题前言学习了Java网络编程了,为了检验自己的学习程序和熟悉相关的知识点,为此,使用Java Socket编程实现了一个简单的FTP服务器。以下记录了自己整个开发的流程。FTP协议自己平时也有用过ftp协议进行文件的传输,知道FTP协议的默认端口是21,可对于底层是如何实现,客户端与服务端之间的通

WoodyOilove 7063

Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈

Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。

士多啤梨先生の博客 994

半导体EAP系统入门指南:从零开始理解设备自动化程序(附实战案例)

本文深入浅出地介绍了半导体制造中EAP(设备自动化程序)系统的核心作用与工作原理。EAP作为连接MES与生产设备的桥梁,负责指令翻译、数据采集与实时控制,是实现晶圆厂全自动化的关键。文章通过对比手动与自动模式,阐述了EAP在提升效率、保障良率方面的价值,并提供了一个实战案例,帮助读者从零构建对半导体CIM体系中这一关键组件的理解。

weixin_29200741的博客 741

Windows搭建FTP服务器,JAVA实现读写功能

Windows搭建FTP服务器目录博主介绍开启FTP功能放行端口重启计算机添加FTP访问用户添加FTP站点本地访问测试修改FTP设置Java整合FTP代码实现????作者相关的文章、资源分享????????点击直接资料领取???? 目录 博主介绍 ???? 个人主页:苏州程序大白 ???? 个人社区:优快云全国各地程序猿 ????作者介绍:中国DBA联盟(ACDU)成员,优快云全国各地程序猿(媛)聚集地管理员。目前从事工业自动化软件开发工作。擅长C#、Java、机器视觉、底层算法等语言。2019年

苏州程序大白的博客 9456

【Halcon-1D测量】measure_pairs 函数功能(用于提取垂直于矩形/环形弧主轴的直边对)

HALCON算子measure_pairs是1D测量模块的基础工具,专用于提取垂直于矩形/环形弧主轴的直边对。该算子通过振幅阈值和灰度过渡规则(如positive/negative)进行边对分组,支持_strongest后缀选择最强边缘避免误配对。输出包含边缘坐标、振幅及内外间距(IntraDistance/InterDistance)。关键限制包括仅适用于直边、Sigma需≤0.5×测量长度,且忽略图像域。相比模糊版本算子,它更适用于边缘清晰的简单场景(如电子元件间距测量)。典型应用需配合gen_meas

weixin_45590420的博客 306

用Java实现FTP服务器

FTP 命令   FTP 的主要操作都是基于各种命令基础之上的。常用的命令有:   ◆ 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式;    ◆ 目录操作,改变或显示远程计算机的当前目录(cd、dir/ls 命令);   ◆ 连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接;   ◆ 发送操作,put命令用于传送文件到远程计算机;mput 命令用于传

Stone的专栏 1969

基于QT+Halcon实现线序识别

一、线序识别算法步骤。 1.按照检测区域m_pItem1的外接矩形(rtBount)的大小, 截取感兴趣区域图像hRoi。 2.把截取出来的感兴趣区域图像hRoi, 分离出R、G、B三个通道hRed、hGreen、hBlue。 3.把hRed、hGreen、hBlue三个通道转换成cielab颜色空间, 得到hChannelL、hChannelA、hChannelB三个颜色图。 4.设m_pItem1的宽为iItemW, 高为iItemH. 分别申请大小为iItemW的pSumL、pSumA、pSumB内

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 1748

基于MATLAB的脑功能网络工具箱:BCT与FCLab

脑功能网络分析是神经科学领域的一个重要研究方向,它通过分析大脑中神经元之间的连接模式和信息传递方式,揭示脑网络的结构和功能。在这个领域,MATLAB是一个广泛使用的工具,提供了丰富的函数和工具箱来进行脑功能网络的分析和可视化。这些工具箱提供了丰富的函数和工具,使得脑功能网络的计算和分析变得更加简单和高效。在上述示例代码中,我们首先导入BCT工具箱,并构建一个邻接矩阵来表示脑网络的连接关系。在上述示例代码中,我们首先导入FCLab工具箱,并导入脑功能数据。函数对数据进行预处理,如去除噪声、降采样等操作。

web_bug407的博客 2611

Java 代码实现 FTP 服务器访问

Java 代码实现 FTP 服务器访问 安装 ftp 服务器工具: ​ 1> 进入官网下载 filezilla 程序包。如果电脑的系统为 Windows ,则进入 https://filezilla-project.org/download.php?type=server 下载程序;否则,进入 https://filezilla-project.org/download.php?type=client 下载安装包。 ​ 2> 安装程序。根据不同的电脑系统,使用不同的安装

TokyoCatZ的博客 1020

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JAVA实现FTP文件上传下载及FTP服务器搭建

最近项目中需要到FTP服务器中下载文件,于是花了点时间研究了一下,网上查了很多资料,都没有很详细的FTP服务器的搭建教程,踩了很多坑,终于搞定了,因此在此记录分享,如有错误,欢迎大家指正,谢谢!FTP是一个专门进行文件管理的操作服务,一般来讲可以在任意的操作系统之中进行配置,但是如果考虑到简便性,一般来讲可以直接在Linux系统下进行安装。 FTP (File Transfer Protocol、文件传输协议)是TCP/IP协议中的一部分,属于应用层协议。

Xunyinyiran的博客 4547

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JAVA实现ftp服务端_用 java 实现FTP SERVER(附源码)

前面用 PYTHON 实现了一个 ftp server(参考这里) ,有朋友问有没有java版本的,其实说白了,ftp 也就是 tcp/ip 协议的一个应用而已,而tcp/ip 基本都是通过socket来传输指令或数据,只要客户端和服务端定义好沟通协议就好了。FTP 是有一套标准的,只要按这套标准去做,就可以实现一个FTP服务器。下面的程序实现了一套简单的基于java的ftp server,你可以...

weixin_35924353的博客 1324

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java ftp server_如何用Java实现FTP服务器

展开全部FTP(File Transfer Protocol 文件传输协议e69da5e6ba903231313335323631343130323136353331333363393631)是Internet 上用来传送文件的协议。在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户...

weixin_39866646的博客 360

java ftp服务器_Java实现FTP服务器功能实例代码

FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议。在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作...

weixin_39850920的博客 641

简单的ftp服务器实现 (java)

学习了计算机网络之后,利用java写了一个ftp服务器。 一、实现的ftp命令        实现了基本的user,pass,list,port,quit,retr,cwd,stor等命令 二、以上命令所对应的功能         对应的功能是:下载,上传,获取服务器目录,切换目录等 三、用于测试的ftp客户端:windows自带的ftp客户端 四、实现的思想

rui1187349730的专栏 1万+

ftp服务器java_用 java 实现FTP SERVER(附源码)

前面用 PYTHON 实现了一个 ftp server(参考这里) ,有朋友问有没有java版本的,其实说白了,ftp 也就是 tcp/ip 协议的一个应用而已,而tcp/ip 基本都是通过socket来传输指令或数据,只要客户端和服务端定义好沟通协议就好了。FTP 是有一套标准的,只要按这套标准去做,就可以实现一个FTP服务器。下面的程序实现了一套简单的基于java的ftp server,你可以...

weixin_34614550的博客 961

【FTP】java实现FTP服务上传下载

1、首先在pom文件中添加ftp相关依赖。 &lt;!--和FTP有关--&gt; &lt;dependency&gt; &lt;groupId&gt;commons-net&lt;/groupId&gt; &lt;artifactId&gt;commons-net&lt;/artifactId&gt; &lt;version&gt;3.3&lt;/version&a

柠檬树 4674

Java实现FTP服务器功能

<br />import java.net.ServerSocket; import java.net.Socket; import org.apache.log4j.Logger; /** * 角色——服务器A * @author Leon * */ public class ServerA{ public static void main(String[] args){ final String F_DIR = "c:/test";//根路径

折心的技术文档 1万+
上一篇: httpclient 实例教程
下一篇: centos 网络配置
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值