介绍:FTP工具类,提供FTP服务器的连接, 查找文件目录,及读取文件内容等操作。

应用场景:

  • 通过FTP连接需要获取文件目录列表
  • 通过FTP连接读取指定文件内容
  • 递归读取遍历服务器上所有文件
  • 其他功能点...可以在留言处提需求给我
package com.nkm.deploy.common.utils;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;/*** @describe FTP工具类* @auto longshilin*/
public class FtpUtil {private static FTPClient ftpClient;private static String strencoding;private static String ip = ""; // 服务器IP地址private static String userName = ""; // 用户名private static String userPwd = ""; // 密码private static int port = 21; // 端口号private static String path = "/"; // 读取文件的存放目录/*** init ftp servere*/public FtpUtil() {this.reSet();}public FtpUtil(String ip, int port, String userName, String userPwd, String path) {this.reSet(ip, port, userName, userPwd, path);}public void reSet() {// 以当前系统时间拼接文件名strencoding = "GBK";this.connectServer(ip, port, userName, userPwd, path);}public void reSet(String ip, int port, String userName, String userPwd, String path) {// 以当前系统时间拼接文件名strencoding = "GBK";this.connectServer(ip, port, userName, userPwd, path);}/*** @param ip* @param port* @param userName* @param userPwd* @param path* @throws SocketException* @throws IOException function:连接到服务器*/public void connectServer(String ip, int port, String userName, String userPwd, String path) {ftpClient = new FTPClient();try {// 连接ftpClient.connect(ip, port);// 登录ftpClient.login(userName, userPwd);if (path != null && path.length() > 0) {// 跳转到指定目录ftpClient.changeWorkingDirectory(path);}} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** @throws IOException function:关闭连接*/public void closeServer() {if (ftpClient.isConnected()) {try {ftpClient.logout();ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}}/*** @param path* @return function:读取指定目录下的文件名* @throws IOException*/public List<String> getFileList(String path) throws ParseException {List<String> fileLists = new ArrayList<String>();// 获得指定目录下所有文件名FTPFile[] ftpFiles = null;try {ftpFiles = ftpClient.listFiles(path);} catch (IOException e) {e.printStackTrace();}for (int i = 0; ftpFiles != null && i < ftpFiles.length; i++) {FTPFile file = ftpFiles[i];if (file.isFile()) {System.out.println("文件夹下面的文件=====" + file.getName());fileLists.add(file.getName());} else if (file.isDirectory()) {System.out.println("文件夹名称为=====" + file.getName());List<String> childLists = getFileList(path + file.getName() + "/");for (String childFileName : childLists) {fileLists.add(childFileName);String fileType = childFileName.substring(childFileName.lastIndexOf(".") + 1, childFileName.length());System.out.println("文件类型为:" + fileType);FtpUtil ftp = new FtpUtil();if (fileType.equals("txt")) {System.out.println("文件名为:" + childFileName);String content = "";content = ftp.readFile(path + file.getName() + "/" + childFileName);System.out.println("文件内容为:" + content);}}}}return fileLists;}/*** @param fileName* @return function:从服务器上读取指定的文件* @throws ParseException* @throws IOException*/public String readFile(String fileName) throws ParseException {InputStream ins = null;StringBuilder builder = null;try {// 从服务器上读取指定的文件ins = ftpClient.retrieveFileStream(fileName);BufferedReader reader = new BufferedReader(new InputStreamReader(ins, strencoding));String line;builder = new StringBuilder(150);while ((line = reader.readLine()) != null) {System.out.println(line);builder.append(line);}reader.close();if (ins != null) {ins.close();}// 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题ftpClient.getReply();} catch (IOException e) {e.printStackTrace();}return builder.toString();}/*** @param fileName function:删除文件*/public void deleteFile(String fileName) {try {ftpClient.deleteFile(fileName);} catch (IOException e) {e.printStackTrace();}}/*** @param path* @return function:读取指定目录下的文件列表目录* @throws IOException*/public List<String> getDirList(String path) throws ParseException {List<String> fileLists = new ArrayList<String>();// 获得指定目录下所有文件名FTPFile[] ftpFiles = null;try {ftpFiles = ftpClient.listFiles(path);} catch (IOException e) {e.printStackTrace();}for (int i = 0; ftpFiles != null && i < ftpFiles.length; i++) {FTPFile file = ftpFiles[i];if (file.isDirectory()) {// System.out.println("文件夹名称为=====" + file.getName());fileLists.add(file.getName());}}return fileLists;}/*** @param args* @throws ParseException*/public static void main(String[] args) throws ParseException {FtpUtil ftp = new FtpUtil();List<String> str = ftp.getDirList("/");for (String a : str) {System.out.println("文件目录为:" + a);}ftp.closeServer();}
}

【FTP工具类】提供FTP服务器的连接, 查找文件目录,及读取文件内容等操作相关推荐

  1. Springboot项目搭建有ftpClientPool的Ftp工具类

    1 前言 最近项目中用到了FTP,于是自己写了一个FTP工具类,现将其分享出来,供大家借鉴使用. FTP工具类的实现可以分为两部分: 基于apache commons-pool2的ObjectPool ...

  2. 手机文件管理ftp服务器,ftp工具手机版(ftp文件传输管理工具)V1.0.2 手机版

    ftp工具手机版(ftp文件传输管理工具)是一款非常实用的ftp文件管理应用工具.主要作用是将手机ftp上的文件数据快速传输到电脑上,或者将电脑上的文件传输到手机上,实现双向传输,并且传输速度十分快, ...

  3. java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源

    实现该方法需要导入一些jar包 可以去一下地址下载: http://pan.baidu.com/s/1hqrJF7m /** * 实用工具类来获取服务器资源 * * get方法传送数据 * * 1.通 ...

  4. java ftp读取文件内容_java读取ftp中TXT文件的案例

    最近在开发关于java读取ftp中TXT文件,其中有些坑踩了一下,再次做个记录 1.读取文件时我会根据文件名称去生成数据库表,oracle数据库对于表名的长度是有限制的,最多30个字符 2.对于多个文 ...

  5. 怎么读服务器文件内容,服务器上读取文件内容

    服务器上读取文件内容 内容精选 换一换 通过云服务器或者外部镜像文件创建私有镜像时,如果云服务器或镜像文件所在虚拟机的网络配置是静态IP地址时,您需要修改网卡属性为DHCP,以使私有镜像发放的新云服务 ...

  6. 1.5 RandomAccessFile类:动态读取文件内容

    所谓动态读取是指从文件的任意位置开始访问文件,而不是必须从文件开始位置读取到文件末尾.动态读取需要用到 Java 中的 RandomAccessFile 类. RandomAccessFile 是 J ...

  7. java连接ftp工具类

    这里使用了org.apache.commons.net.ftp这个类库,仅仅是对这个类库稍微封装了一下方便使用,这里写了一个工具类,大家可以参考一下. 介绍一个 ftp客户端工具:iis7服务器管理工 ...

  8. FtpUtil ftp工具类 过滤文件名

    工具类: import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataInputSt ...

  9. ftp工具类:上传与下载文件

    准备工作 服务器已经配置好ftp服务 linux服务器搭建ftp服务: https://program.blog.csdn.net/article/details/88825921 需要用到的jar包 ...

最新文章

  1. java 1.7 liunx_在linux下安装Jdk1.7
  2. WPF动画之后属性值无法改变
  3. 文巾解题 136. 只出现一次的数字
  4. 吴恩达深度学习5.2练习_Sequence Models_Operations on word vectors
  5. php foreach是什么,php foreach用法是什么
  6. windows启动管理器_必备的9个Windows设置技巧,可以将Windows 10的性能大幅提高
  7. JAVA字符串功能,Java分析字符串功能
  8. C#序列化与反序列化方式简单总结
  9. CentOS 7 service systemnctl
  10. Bz1621.lzh二进制编辑器下载
  11. QGIS无人机数据分析教程
  12. 【渝粤教育】电大中专消费者行为学_1作业 题库
  13. 地震数据的获取与处理
  14. 《University Calculus》-chape12-偏导数-基本概念
  15. linux设置ps2鼠标,linux环境变量设置 (PS1,PS2)
  16. 对抗鲁棒性使得神经网络又强又怂
  17. 硬件知识:独立显卡和集成显卡的区别
  18. 丰田召回事件的深层次原因
  19. RxJava过滤操作符
  20. 【微前端】591- 微前端在小米 CRM 系统的实践

热门文章

  1. 集合(无序,区别有序集合)
  2. 一劳永逸的使用最新nodejs开发环境
  3. 面向对象的高分辨率遥感影像分类实例
  4. c++ 三次多项式拟合_从寻找谷神星的过程,谈最小二乘法实现多项式拟合
  5. 实验报告总结_你的年终总结,决定了你在企业的未来
  6. 从0开始教你三天完成毕业设计-项目设计
  7. C语言怎么实现多个值输出?
  8. python拼接字符串的方法,Python2中文字符串拼接
  9. vscode配置tpl文件关联html语言
  10. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31