java连接FTP服务器图文教程

java连接FTP服务器图文教程

java连接FTP服务器图文教程

更新时间:2023年08月08日 10:24:49   作者:

这篇文章主要给大家介绍了关于java连接FTP服务器的相关资料,Ftp是一种常见的文件存储服务器,在很多的项目中都有使用,方便存储各种格式的文件,使用java连接ftp文件服务器也是常用的工具类,需要的朋友可以参考下

这一期,我们来学习一下如何用Java连接FTP服务器。在工程项目中,我们往往需要连接FTP服务器。当我们有此需求时,可以从两个方面考虑。第一,根据FTP协议自己写出一套程序ftp java,这是一种思路,当然这是一件很费时又耗成本的一件事。我们是工程师,我们的目的是把需求实现,而不是科研项目。所以得考虑另一种思路,去寻找已经做好的API。好巧,刚好有一个开源组织为我们做好了这个APIftp java,那就是伟大的。下面就开始时根据给我们提供的API完成我们的需求。

第一步,下载jar包,登录官网如下:

ftp java

然后找到“”点进去,出现下拉框。点击“ List”

ftp java

找到点进去

ftp java

往下滑,找到“net”

ftp java

点进去,然后在左上角找到“”

ftp java

点击然后往下滑,找到如图

ftp java

其中是编译后的jar,是源代码。一般使用的是编译后的jar,将其下载java连接FTP服务器图文教程,下载之后就是新建项目导jar包。如何导jarjava连接FTP服务器图文教程,不会再这里说。此时,我们jar已经准备好。我们还需要一个ftp服务器,如何建立ftp服务器也不会再这里说。

现在假设你已经创建好项目ftp java,已经建立好ftp服务器,下面就直接上代码了。

package my;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
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;
public class TestFTPClient
{
	// API里对中文FTP目录的处理有点问题
	// 在调用 changeWorkingDirectory() / listFiles()等方法时,将参数路径转换一下
	public static String ftpPath(String path)
	{
		try
		{
			return new String(path.getBytes("UTF-8"), FTP.DEFAULT_CONTROL_ENCODING);
		} catch (UnsupportedEncodingException e)
		{
			return "";
		}
	}
	public static void main(String[] args) throws Exception
	{
		FTPClient ftp = new FTPClient();
		// 连接服务器
		ftp.connect("127.0.0.1", 21);
		int reply = ftp.getReplyCode();
		if (!FTPReply.isPositiveCompletion(reply))
		{
			ftp.disconnect();
			System.out.println("** 无法连接至FTP服务器!");
			System.exit(1);
		}
		if (!ftp.login("test", "123456"))
		{
			ftp.logout();

ftp java

System.out.println("** 错误的用户名或密码!"); System.exit(1); } System.out.println("Connected."); // 字节传输 BINARY_FILE_TYPE // 文本传输 ASCII_FILE_TYPE // 一般使用BINARY模式来传输文件,很少使用 ASCII_FILE_TYPE ftp.setFileType(FTP.BINARY_FILE_TYPE); // 主动模式: enterLocalActiveMode() // 被动模式: enterLocalPassiveMode() // 一般选择被动模式 ftp.enterLocalPassiveMode(); // 设置控制通道的字符集, 要与服务端的设定一致 ftp.setControlEncoding("UTF-8"); // 切换目录 ( 用ftpPath() 转换一下 ) // boolean rc = ftp.changeWorkingDirectory(ftpPath("/图片")); // if(!rc) // { // System.out.println("切换目录出错!"); // } // ... // // 列出所有的文件/子目录 // listFile(ftp); //上传一个文件 //upload(ftp); // 下载一个文件 download(ftp); ftp.logout(); ftp.disconnect(); System.out.println("Quit."); } public static void listFile(FTPClient ftp) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("> list"); FTPFile[] ftpFiles; try { ftpFiles = ftp.listFiles(); for (FTPFile f : ftpFiles) { String time = sdf.format(f.getTimestamp().getTime()); String info = ""; if (f.isDirectory()) info = String.format("+ %-20s", f.getName()); else info = String.format(" %-20s %8d %s", f.getName(), f.getSize(), time); System.out.println(info); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 上传一个文件 public static void upload(FTPClient ftp) { File localFile = new File("E:\代码\HBiuder.zip"); InputStream inStream; OutputStream outStream; try { String remotePath = ftpPath(localFile.getName()); inStream = new FileInputStream(localFile); // // 小文件直接 用 // ftp.storeFile(remotePath, inStream); //大文件时用这个方法 outStream = ftp.storeFileStream(remotePath); // 大文件,可以自己掌握进度 byte[] buffer = new byte[4000]; while (true) { int n = inStream.read(buffer); if (n <= 0) break; outStream.write(buffer, 0, n); } inStream.close(); outStream.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //文件下载 public static void download(FTPClient ftp) throws Exception { File localFile = new File("D:/tmp/copy.zip"); localFile.getParentFile().mkdirs(); // String remotePath = ftpPath("/HBiuder.zip"); OutputStream outStream = new FileOutputStream(localFile); // 小文件直接 用 // ftp.retrieveFile(remotePath, outStream); // 大文件,可以自己掌握进度 InputStream inStream = ftp.retrieveFileStream(remotePath); if(inStream == null) throw new Exception("远程文件不存在!" + remotePath); byte[] buffer = new byte[4000]; while(true) { int n =inStream.read(buffer); if(n <= 0) break; outStream.write(buffer,0,n); } inStream.close(); outStream.close(); } }

仅供参考,如有不足,多多指教。

到此这篇关于java连接FTP服务器的文章就介绍到这了,更多相关java连接FTP服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » java连接FTP服务器图文教程

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们