java实现的FTP上传下载客户端
org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能:
需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFile[] fileList = ftpClient.listFiles()的执行过程中可能会报错,此时更换导入2.0版本的jar包,问题即可解决。
代码如下:
package com.java.ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.net.ftp.*; public class FtpUtil { private FTPClient ftpClient = new FTPClient(); /** * 连接到FTP服务器 * * @param host * FTP地址 * @param port * 端口号 * @param username * 用户名 * @param password * 密码 */ public boolean ftpConnect(String host, int port, String username, String password) { try { ftpClient.connect(host, port); ftpClient.setControlEncoding("GBK"); int reply = ftpClient.getReplyCode(); if (FTPReply.isPositiveCompletion(reply)) { if (ftpClient.login(username, password)) { System.out.println("Successful login!"); return true; } else { System.out.println("fail to login!"); } } } catch (Exception e) { System.out.println("Failure connection!"); e.printStackTrace(); } return false; } //从本地上传单个文件,localName:本地文件路径包含文件名,ftpFile:所要放于ftp的文件夹,newName:重命名 public void ftpUpload(String localName, String ftpFile, String newName) { File srcFile = new File(localName); FileInputStream fis = null; try { fis = new FileInputStream(srcFile); //改变工作目录到所需要的路径下 ftpClient.changeWorkingDirectory(ftpFile); ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("GBK"); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile(newName, fis); } catch (Exception e) { System.out.println("Failed to upload!"); e.printStackTrace(); } finally { try { fis.close(); ftpDisConnect(); } catch (IOException e) { e.printStackTrace(); } } } //从本地上传一个文件夹,localPath:本地文件夹,ftpPath:上传的资源所要存放的文件夹 public void ftpUpload2(String localPath, String ftpPath) { File uploadFile = new File(localPath); File[] fileList = uploadFile.listFiles(); FileInputStream fis = null; if (fileList == null) { return; } for (int i = 0; i < fileList.length; i++) { try { fis = new FileInputStream(fileList[i]); String ftpFileName = fileList[i].getName(); ftpClient.changeWorkingDirectory(ftpPath); ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("GBK"); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile(ftpFileName, fis); } catch (Exception e) { e.printStackTrace(); } } try { fis.close(); } catch (IOException e) { e.printStackTrace(); } ftpDisConnect(); } //从FTP下载单个文件 public void ftpDownload(String ftpFile, String localName) { File outfile = new File(localName + "/" + ftpFile); OutputStream fos = null; try { fos = new FileOutputStream(outfile); ftpClient.setBufferSize(1024); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.retrieveFile(ftpFile, fos); } catch (Exception e) { System.out.println("Failed to upload!"); e.printStackTrace(); } finally { try { fos.close(); ftpClient.disconnect(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ftpDisConnect(); } } //从FTP下载一个文件夹 public void ftpDownload2(String ftpPath, String localPath) { OutputStream fos = null; File localFile = null; try { ftpClient.changeWorkingDirectory(ftpPath); FTPFile[] fileList = ftpClient.listFiles(); for (int i = 0; i < fileList.length; i++) { String localname = fileList[i].getName(); localFile = new File(localPath + "/" + localname); fos = new FileOutputStream(localFile); ftpClient.setBufferSize(1024); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); } } catch (Exception e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } ftpDisConnect(); } public void ftpDisConnect() { try { if (ftpClient.isConnected()) { ftpClient.disconnect(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //测试 public static void main(String[] args) { FtpUtil ftp = new FtpUtil(); ftp.ftpConnect("172.20.65.30", 21, "z", "zzz"); //下载单个文件 ftp.ftpUpload("D://1.jpg", "/s", "6.jpg"); //下载文件夹 ftp.ftpUpload2("D://桌面", "/s"); //上传单个文件 ftp.ftpDownload("/s/2.jpg", "e:/"); //上传文件夹 ftp.ftpDownload2("/s","e://s"); } }
java实现的FTP上传下载客户端相关推荐
- ftp. java. jdk_java实现ftp上传下载(jdk1.7以下)
java实现ftp上传下载(jdk1.7以下)完整代码,复制可用 FTP实现代码: package com.util; import java.io.File; import java.io.File ...
- ACTIVEX实现大文件FTP上传下载---上
ACTIVEX实现大文件FTP上传 在Windows 操作系统下,有一个重要的机制,就是OLE ,就是可以让某个应用程序(OLE Controller)访问其它应用程序(OLE Server)所提供的 ...
- java ftp上传文件_jaVA使用FTP上传下载文件的问题
为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...
- 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:宇的季节 cnblogs.com/chenkeyu/p/80 ...
- ftp上传下载文件详解
首先导入包 import org.apache.commons.NET.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; FTPCli ...
- FTP上传下载端口号
FTP上传下载端口号,上传下载分两种模式,主动式,被动式,主动式就是FTP服务器主动打开端口,把数据给客户端,被动式就是客服端自己从服务器的某个端口号取数据. 端口有两个,控制端口,数据传输端口,主 ...
- android ftp同步程序,ftp同步 安卓,安卓手机ftp上传下载文件功能同步视频照片
手机拍照越来方便,手机里的照片也越积越多,手机运行缓慢,本文利用安卓的每步FTP服务APP来自动实现手机视频照片的同步,释放手机被占用的存储空间.在机顶盒上运行每步FTP服务,机顶盒USB口连接U盘做 ...
- ftp上传-下载文件通用工具类,已实测
话不多说直接上代码 package com.springboot.demo.utils;import lombok.extern.slf4j.Slf4j; import org.apache.comm ...
- linux curl 命令 http请求、下载文件、ftp上传下载
1. curl 命令简介 cURL(CommandLine Uniform Resource Locator),是一个利用 URL 语法,在命令行终端下使用的网络请求工具,支持 HTTP.HTTPS. ...
最新文章
- 十、Redis五大数据类型之二List
- c语言uint赋值给int,如何在C#中将uint转换为int?
- chown chmod usermod命令的使用
- winform中键盘和鼠标事件的捕捉和重写(转)
- C++_引用_引用的基本语法_注意事项_引用做函数参数---C++语言工作笔记031
- android_ratingbar的使用错误
- windows10 1909 X64位 精简优化珍藏版
- 数学建模论文详细分工——论文手要求篇
- 内网邮箱pop服务器,如何在POP3邮件服务器中创建用户邮箱
- 使用LSTM神经网络+CTC loss识别freetype库生成的不定长验证码
- 这里除了安全,什么都不会发生!Docker镜像P2P加速之路
- 通过SQL语句数据库简繁体转换
- 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- [unityshader]制作能量护盾以及简单互动
- 高数下|级数4|手写笔记(绝对收敛与条件收敛)
- ums网管应用unix系统的常用操作 (五)--iteye技术网站
- fcpx插件:Stupid Raisins Look Pop(30个时尚标注插件)
- H3C 交换机DRNI特性使用介绍
- Hamlet.txt下载及实现文本词频统计
- 百度云同步盘登录失败,报错155010的问题解决