公司新项目需要在ftp服务器上读取文件保存到数据库,所以学习了一下怎么读取

项目采用的是springboot框架,首先需要在pom文件中加入comment.net jar包依赖

<!-- 读取ftp 文件--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency>

然后写一个ftp登陆的方法,采用@Slf4j注解 来引入log日志

//传入ftp地址,端口,登录名,密码public FTPClient getFtpClient(String host, int port, String userName, String password) {FTPClient ftp = new FTPClient();try {ftp.connect(host, port);// 连接ftpftp.login(userName, password);// 登陆ftp//判断ftp是否登录成功if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {log.info("登陆成功" + host + ":" + port);return ftp;} else {log.info("登陆失败,用户名或者密码错误" + host + ":" + port);ftp.disconnect();//ftp关闭return null;}} catch (SocketException e) {e.printStackTrace();log.error("ftp地址可能错误");} catch (IOException e) {e.printStackTrace();log.error("ftp端口错误");}return null;}

然后写读取文件的方法

   //传入ftp连接,和该链接下面的文件名称public String readFile(FTPClient ftp, String fileName) {StringBuffer sb = new StringBuffer();InputStream ps = null;try {ftp.setControlEncoding("UTF-8");ftp.changeWorkingDirectory(fileName);// 改变工作空间FTPFile[] ff = ftp.listFiles();//列出fileName下面所有文件for (int i = 0; i < ff.length; i++) {//如果该文件是文件夹,调用自身方法if (ff[i].isDirectory()) {String s = readFile(ftp, ff[i].getName());sb.append(s);} else {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");String date=dateFormat.format(new Date());System.out.println("当前时间"+date);//读取以当天日期命名的txt文件if (ff[i].getName().matches(date+".*.txt")) {System.out.println(ff[i].getName());//以二进制流的方式读取ftp.setFileType(FTPClient.BINARY_FILE_TYPE);ftp.enterLocalPassiveMode();ps = ftp.retrieveFileStream(ff[i].getName());if (ps != null) {BufferedReader br = new BufferedReader(new InputStreamReader(ps));String data = null;sb.append(ff[i].getName());try {while ((data = br.readLine()) != null) {sb.append(data);}//关闭流if (br != null) {br.close();}ftp.completePendingCommand();} catch (IOException e) {e.printStackTrace();}}}}}} catch (IOException e) {log.error("文件读取失败");e.printStackTrace();}return sb.toString();}
 //关闭ftp连接public static void closeFTPClient(FTPClient ftpClient) {try {ftpClient.disconnect();log.info("连接关闭");} catch (IOException e) {log.error("关闭ftp异常...", e);}}

写个main方法测试一下

 public static void main(String[] args) {FtpRead ftp = new FtpRead();FTPClient ftc = ftp.getFtpClient("10.5.202.7", 21, "aa", "test");try {FTPFile[] ftf = ftc.listFiles();for(FTPFile  f:ftf){String s=ftp.readFile(ftc,"/"+ f.getName());System.out.println(s);}} catch (IOException e) {e.printStackTrace();}finally {FtpRead.closeFTPClient(ftc);}}

运行结果:

ftp目录结构为:

之前没有负责过这一块的任务,现在学习一下,第一次写博客,写的不好请见谅哈!

java循环读取ftp服务器上面的文件相关推荐

  1. java在FTP服务器创建文件夹,java在ftp服务器上创建文件夹

    java在ftp服务器上创建文件夹 内容精选 换一换 启动目的端时失败,错误码:SMS.3103,提示迁移失败原因"对目的服务器重新建立引导失败".启动目的端后,系统会重新安装目的 ...

  2. java ftp取远程服务器时间_在 Java 中如何获取 FTP 服务器上的文件修改时间

    使用 Apache Commons Net 进行 FTP 编程的时候,可以使用 FTPClient 类的方法来获取和设置 FTP 服务器上特定文件的修改时间: String getModificati ...

  3. java ftp文件大小_java如何获得ftp服务器上指定文件的大小

    我想获得ftp服务器上指定文件的大小 以及下载过程中文件的已完成下载的大小 求教 这个是我写的方法 code:: public static boolean downLoadFtp(String ft ...

  4. ftp服务器如何复制文件路径,ftp服务器上复制文件路径

    ftp服务器上复制文件路径 内容精选 换一换 该任务指导用户使用Loader将数据从HDFS/OBS导出到SFTP服务器.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业 ...

  5. ftp服务器上传文件权限设置,ftp服务器 上传文件权限设置

    ftp服务器 上传文件权限设置 内容精选 换一换 华为云对象存储服务帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用对 ...

  6. cfilefind 能找ftp 服务器上的文件夹吗?,将ftp目录映射为本地盘符

    1.ftpuser 创建 FTPUSE F: www.xx.com pwd  /USER:admin /NOPASSIVE /PORT:21 删除 ftpuse F: /delete cmd窗口不可关 ...

  7. 读取远程服务器上文件内容,读取远程服务器上的文件

    读取远程服务器上的文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JDK 8 ...

  8. 服务器上的文件夹设置ftp,设置ftp服务器上传文件夹

    设置ftp服务器上传文件夹 内容精选 换一换 监控数据上报功能可以将系统中采集到的监控数据写入到文本文件,并以FTP或SFTP的形式上传到指定的服务器中.使用该功能前,管理员需要在FusionInsi ...

  9. 播放ftp服务器视频文件,远程播放ftp服务器上的文件

    远程播放ftp服务器上的文件 内容精选 换一换 添加节点时提示"添加节点失败,节点已存在".待添加节点的服务器上已安装系统性能分析或者添加过节点.如果待添加节点的服务器上已安装系统 ...

最新文章

  1. 计算机视觉研究生文献和复现哪个更重要?
  2. java中gso是什么意思_在java中用gson解析json
  3. JAVA顺序表的简单实现
  4. bcb异常处理显示错误行号_SpringBoot系列(七)- springboot 错误异常处理统一办法
  5. php实例之简单的留言板,PHP实例一之简单的留言板
  6. java管理分类编写_java029学生管理系统的编写
  7. MongoDB多条件分组聚合查询
  8. 区块链相关名词解释(一)
  9. 在移动端H5开发中(关于安卓端position:fixed和position:absolute;和虚拟键盘冲突的问题,以及解决方案)...
  10. Android 百度地图开发详解
  11. cisco2811路由器密码恢复
  12. 【Redis总结-基础入门】
  13. 虚拟打印机如何打印Text
  14. 报错 SocketTimeoutException: null
  15. php懂erp是什么意思,ERP是个什么鬼,这里的讲解通俗易懂
  16. Idea 文件定位图标显示与关闭 -- idea ver:2020.1
  17. linux系统和性能监控之cpu篇,Linux系统和性能监控之CPU篇
  18. 最短路Dijkstra+Floyd
  19. 文本数据下的用户画像
  20. 【dSPACE】从0开启dSPACE之路(2)具体上手操作步骤

热门文章

  1. shell脚本mysql清空指定数据库表数据(排除指定库表不清空)
  2. 4.23 使用应用图像命令制作艺术效果 [原创Ps教程]
  3. vue项目滚轮失效问题
  4. 蜗牛星际改内存_蜗牛星际C款双I211网卡4G内穿13SATA开箱及网卡测试
  5. Android Studio电脑上怎么下载-Android Studio下载和安装图文教程[超详细]
  6. /sm/wx.php,出生日期查五行属性
  7. word文档保存修订信息,打开时默认不显示标记信息
  8. Python-字符串和模块的应用
  9. 什么是GC对于GC垃圾回收机制的理解
  10. shell命令怎么退出去