java 中应用FTP的一些知识点及注意

主要有ftp的上传、下载、取得ftp文件列表功能。其中上传引用的是jdk自带的sun.net.flt.FtpClient(路径不知时候正确),文件列表和下载应用的是apache 的common -net .jar  jar包

具体代码如下:

	/**
		 * 连接ftp服务器
		 * @param server  服务器地址
		 * @param user 用户名
		 * @param password  密码
		 * @param path 用户权限根路径下面的路径
		 */
		public static FtpClient connectServer(String server, String user, String password,String path){
			// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
			// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
			FtpClient ftpClient = new FtpClient();
			try {
				ftpClient.openServer(server);
				ftpClient.login(user, password);
				//path是ftp服务下主目录的子目录
				if (path.length() != 0)
				ftpClient.cd(path);
				//用2进制上传
				ftpClient.binary();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return ftpClient;
		}
	/**
	 * 上传文件到ftp服务器
	 * 	@param 服务名称 ,后面没有端口参数默认为21
	 *  @param user 用户名
	 *  @param password 密码
	 *  @param path 路径
	 *  @file 要上传的文件
	 */
	public static boolean uploadToFtp(String server, String user, String password,String path,File file){
		// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
		// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
		boolean flag = true;
		FtpClient ftpClient = new FtpClient();
		try {
			ftpClient.openServer(server);
			ftpClient.login(user, password);
			//path是ftp服务下主目录的子目录
			if (path.length() != 0)
			ftpClient.cd(path);
			//用2进制上传
			ftpClient.binary();
			if (ftpClient != null) {
			   TelnetOutputStream os = null;
				FileInputStream is = null;
				//"upftpfile"用ftp上传后的文件名
				os = ftpClient.put(file.getName());				
				is = new FileInputStream(file);
				byte[] bytes = new byte[1024];
				int c;
				while ((c = is.read(bytes)) != -1) {
				  os.write(bytes, 0, c);
				}
				if (is != null) {
				  is.close();
				}
				if (os != null) {
				  os.close();
				}
			} 
			ftpClient.closeServer();						
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			flag = false;
		}
		return flag;
	}
	
	/**
	 *得到FTP中的文件目录 
	 */
	public static List getFtpList(String server, String user, String password,String path){
	   org.apache.commons.net.ftp.FTPClient ftpClient = new FTPClient();
	   List<FTPFile> listFtpFiles  = new ArrayList<FTPFile>();
	try {
	   ftpClient.connect(server);
	   ftpClient.login(user, password);
	   FTPFile[] names = ftpClient.listFiles(path);
	  // ftpClient.setKeepAlive(true);
	   for(FTPFile ftpFile :names){
		   //System.out.println("文件名称:"+new String(ftpFile.getName().getBytes("iso-8895-1"),"gbk"));
		   ftpFile.setName(new String(ftpFile.getName().getBytes("iso-8859-1"),"gbk"));
		   listFtpFiles.add(ftpFile);
	   }
	   ftpClient.disconnect();
	} catch (SocketException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	} catch (IOException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	   return listFtpFiles;
	}
	
	 /**
  * ftp下载
  * @param fileName 要下载的文件的名称
  * @param outDir 文件的输出路径
  */
 public static boolean  downLoadFtpFile(String server, String user, String password,String path,String fileName,String outDir){
  boolean flag = true;
  org.apache.commons.net.ftp.FTPClient ftpClient = new FTPClient();  
  try {
     ftpClient.connect(server);
     ftpClient.login(user, password);
     FTPFile[] names = ftpClient.listFiles(path);
    // ftpClient.setKeepAlive(true);
     for(FTPFile ftpFile :names){
      //System.out.println("文件名称:"+new String(ftpFile.getName().getBytes("iso-8895-1"),"gbk"));
      ftpClient.setControlEncoding("gbk");
      String name = new String(ftpFile.getName().getBytes("iso-8859-1"),"gbk");
     // String name = ftpFile.getName();
     if(name.equalsIgnoreCase(fileName)){
       OutputStream os = new FileOutputStream(new File(outDir+File.separatorChar+name));
       System.out.println("文件名:"+name);
       ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
       //如果对名称不进行转换的话会将中文的文件下下来后大小变为0kb
       ftpClient.retrieveFile(new String((path+File.separatorChar+name).getBytes("gbk"),"iso-8859-1"), os);
       os.close();
     }    
     }
     ftpClient.disconnect();
  } catch (Exception e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
   flag = false;
  }
     return flag;
 }

 

Java 实现上传文件到FTP和从FTP下载文件 在eclipse 中创建项目,并将commons-net-3.6.jar包复制到项目中commons-net-3.6.jar:链接:https://pan.baidu.com/s/1iz0862TXljeXd-uHoJ0CvA 密码:hf50在项目中创建JAVA 类TestFtpClient,程序代码如下:package ftp_email; import java.io.FileInputSt... 阅读详情

相关推荐

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

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

weixin_30700095的博客 1973

java操作FTP时遇到的问题小结

今天在做java开发FTP文件上传时,遇到了一些问题。现在项目完成了,有时间总结一下。我用的第三方jar是:etdftpj-1.4.5.jar。 [b][size=large]问题一:java在获取FTP Client时,指定路径在Windows和Linux下的表示方式不同。[/size][/b] Windows FTP Server:"/folder"; Linux FTP Serve...

wuyunmin的专栏 349

macOS Jdk1.8安装(目前主流版本的jdk)

添加环境环境变量,类似于windows的高级设置中path配置的环境变量。查看 JAVA_HOME 目录。查看 JDK 版本信息。一直下一步安装就好了。在终端的根目录下运行。

m0_50207524的博客 9353

FTP实用类

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.RandomAccessFile;

dsghre的专栏 663

libfranka---joint_impendence_control例程分析

joint_impedance_control.cpp例程分析 部分内容来自链接,我个人以初学者的角度对代码进行了更加细致的解释。 核心部分: // Set and initialize trajectory parameters. const double radius = 0.05; const double vel_max = 0.25; const double acceleration_time = 2.0; const double run_time = 20.0; d

weixin_41567783的博客 1121

Cesium实战:全球海洋动态水面与自定义区域波浪效果实现

本文详细介绍了在Cesium中实现全球海洋动态水面与自定义区域波浪效果的实战方法。通过解析核心概念Primitive与Geometry,并深入讲解Water材质的关键参数调节,指导开发者快速创建逼真的动态海洋。文章重点阐述了如何利用多边形坐标定义不规则图形区域,实现精准的局部水域波浪效果,并提供了性能优化与视觉提升的实用技巧。

weixin_29256771的博客 501

File类的作用

简述File类的作用 一个File对象而可以代表一个文件或目录, File可以实现获取文件和目录属性等功能, 可以实现对文件和目录的创建,删除等功能 File类操作目录与文件的常用方法有哪些 文件方法: 对象名.createNewFile()//创建新文件。 对象名.delete()//直接从磁盘上删除 对象名.exists()//查询磁盘中的文件是否存在 对象名.getAbsolutePath(...

kiing9819的博客 2273

[SoC]SoC验证中bootcode与firmware相关验证经验总结

本文总结了SoC验证中bootcode和firmware的验证经验。重点介绍了两种数据加载方法:1)使用Verilog系统函数$readmemh/$readmemb直接写入ROM/ARAM,需注意文件路径、格式和斜杠方向;2)通过Memory Hierarchy在initial块中操作,需要添加适当延时并注意路径拼接。文章还提供了在testcase phase中先读取数据到HASH再写入SRAM的示例,并强调加载后需使能edc_bypass以避免ECC错误。验证过程中需特别注意文件位置、格式要求及路径处理等

元直的博客 2497

【开发心得】Java ftp开发注意事项

先outputStream close之后才能调用 completePendingCommand,否则会卡住,有文章说,如果上传路径没有权限,无法创建output对象,也有可能卡住,需要注意下。博主实践的逻辑是,使用断点续传的两组方法,外部传递listener 抽象接口,监听stop时机,在流拷贝的时候,关闭输入输出流,并使用ftpclient.abort()方法。除了先关闭之外,一定要确定远程文件存在且能访问,否则inputStream为null,无法调用close,就会卡住。

清风唱诗人的博客 1637

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

RK3568平台(网络篇)添加网络交换芯片RTL8306M

该交换芯片支持I2C、SPI、mdio通信,但是看ast1520的uboot代码采用的是mdio去通信phy芯片的,所以暂时也先采用mdio的方式,需要配置相应的引脚才可以配置成mdio通信模式,具体的配置硬件工程师解决。RTL8306M芯片上可能没有提供MDC/MDIO接口,可以通过GPIO(General Purpose Input/Output)来模拟,GPIO可实现串行输入输出,且一般CPU上会提供很多GPIO接口供用户自定义使用。

weixin_49303682的博客 3934

关于使用java语言操作FTP的一些问题

1.java操作ftp使用到了FTPClient类,因此请首先导入commons-net-xxx.jar包(gradle配置:compile group: 'commons-net', name: 'commons-net',version: '3.5') 2.在使用java进行文件上传时如果 ftpClient.storeFile(f.getName(), instream); 返回一直是fa

小希望gg的博客 1323

ABB变频器使用PROFINET IO通信模块时的激活方法

ABB变频器使用PROFINET IO通信模块时的激活方法

Robot_PLC_HMI_Automation 2733

Java实现文件上传到ftp服务器

使用java来实现将文件上传到ftp服务器中

weixin_44486583的博客 1万+

多模态大模型:技术原理与实战 全球多模态大模型介绍

关键词:多模态大模型、深度学习、计算机视觉、自然语言处理、跨模态学习、迁移学习、人工智能随着人工智能技术的飞速发展,多模态大模型已经成为了当前AI领域最热门的研究方向之一。多模态大模型能够同时处理和理解多种类型的数据,如文本、图像、音频和视频等,这为AI系统在复杂场景下的应用提供了更加强大和灵活的能力。本文将深入探讨多模态大模型的技术原理,介绍其实战应用,并对全球主要的多模态大模型进行全面的介绍和比较。

AI天才研究院 4267

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JAVA上传文件到FTP

需求说明:将指定文件上传到FTP,上传成功后修改文件名。 获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了) /** * 测试上传 * @param map 从数据库获取到的文件信息 (包含文件路径FILE_PATH 文件类型FILE_TYPE等信息) */ public void testUpdFtpFile(Map<String,Object>...

hold on the last 4962

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java ftp详解_Java FTP 基本操作

最近工作中用到了 FTP 相关的操作,所以借此机会了解了下具体内容。FTP基础关于 FTP 基础推荐阅读《使用 Socket 通信实现 FTP 客户端程序》,其中需要特别注意的是主动模式和被动模式,这一部分在日常使用中经常被忽略,但生产环境中可能会出问题,关键在于防火墙对端口的控制。主动模式:服务器采用 21 和 20 端口,客户端采用大于 1024 的随机端口,连接指令和文件传输指令由服务端发送...

weixin_34901243的博客 8829

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【日常开发之FTP】Windows开启FTP、Java实现FTP文件上传下载

FTP是一个专门进行文件管理的操作服务,一般来讲可以在任意的操作系统之中进行配置,但是如果考虑到简便性,一般来讲可以直接在Linux系统下进行安装。FTP (File Transfer Protocol、文件传输协议)是TCP/IP协议中的一部分,属于应用层协议。使用FTP最主要的功能是对文件进行管理,所以在FTP内部对于文件支持有两种传输模式:文本模式(ASCII、默认)和二进制模式(Binary),通常文本文件使用ASCIl模式,而对于图片、视频、声音、压缩等文件则会使用二进制的方式进行传输。

一码归一码@ 3000

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

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

Xunyinyiran的博客 4545

edtftpj让Java上传FTP文件支持断点续传

在用Java实现FTP上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传;或者想做类似迅雷下载类似的功能,文件太大,今天传一半,睡一觉去先,明天继续传。   Java上传FTP文件,用的比较多的工具是apache的commons-net。如果想用commons-net实现FTP上传的断点续传还是有点麻烦。   除了

叉叉哥的BLOG 5997

java实战3:用java实现数据文件上传到ftp服务器

1:ftp简介 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。 FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完

weixin_43930865的博客 7196

Java实现ftp的上传、下载和删除

Java实现ftp的上传、下载和删除,从无到有一步一步来。

Veggie的博客 6855

java操作FTP

类提供了许多其他方法来处理各种FTP操作。此外,实际返回值可能会根据FTP服务器的响应而有所不同。,先确认你是FTP文件服务器还是FTPS。这句代码报错,确认你的文件服务器类型,是。,否则connect就会报这个错误。java链接FTP文件使用的是。指定本地路径的时候要用前缀。

while(life)++; 1018

java连接ftp服务器————实现上传文件、下载文件

java实现连接FTP服务器,实现文件的上传和下载 最近项目需要使用FTP服务器,来进行文件的上传和下载!本文主要介绍连接FTP服务器,进行文件的上传和下载,至于如何搭建FTP服务器,网上有很多教程,大家可以自行百度!!! 废话不多说,直接上代码: 下面是实现FTP的连接、文件上传以及文件的下载代码: package com.soyuan.wxdemo.utils; import java.io....

weixin_43580683的博客 8065

FTP上传下载以及相关注意点

FTP上传下载

最爱黄安安的博客 6333

java ftp 读取文件读不出来,多文件,获取不到文件内容注意事项和读取ftp内容的方法

java ftp 读取文件读不出来,多文件,获取不到文件内容注意事项 一、连接ftp的方法和读取文件内容 import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import org....

qq_36395686的博客 3230
上一篇: ajax 不进入后台的问题
下一篇: 不同数据库的数据库类型及对应的jdbc类型
smartfirstme
博客等级 码龄18年 1粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值