Java实现从FTP获取文件下载到本地,并读取文件中的内容的成功案例

2023-11-11

package com.aof.web.servlet;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;

import javax.jws.WebService;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;



@WebService(endpointInterface="com.aof.web.servlet.QualityComplainServices")
public class QualityComplainServicesImpl implements QualityComplainServices {

	//ftp对象
    private FTPClient ftp;
    //需要连接到的ftp端的ip
    private String ip = "10.46.249.7";
    //连接端口,默认21
    private int port = 21;
    //要连接到的ftp端的名字
    private String name = "DKEDI";
    //要连接到的ftp端的对应得密码
    private String pwd = "P@ssw0rd";
    
    
  //调用此方法,输入对应得ip,端口,要连接到的ftp端的名字,要连接到的ftp端的对应得密码。连接到ftp对象,并验证登录进入fto
    public boolean ftp1() {
        ftp = new FTPClient();
        try {
//          ftp.connect(ip, port);
        	if(!ftp.isConnected()){
        		ftp.connect(ip, port);
    		}
            System.out.println(ftp.login(name, pwd));
//          ftp.setCharset(Charset.forName("UTF-8"));
            ftp.setControlEncoding("UTF-8");
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return true;
        }
        
    }
    
    public void disconnect() throws Exception {
		if (ftp.isConnected()) {
			ftp.disconnect();
		}
	}
    
 // 下载文件到本地
 	public boolean download(FTPFile file) throws Exception {
 		boolean result = true;
 		// 本地文件路径
 		File f = new File("E:\\crmFiles\\");
 		if (!f.exists()) {
 			f.getParentFile().mkdirs();
 		}
 		long lRemoteSize = file.getSize();
 		try {// 下载过的不在下载了
 			OutputStream out = new FileOutputStream(f);
 			if (f.length() >= lRemoteSize) {
 				System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~本地已经存在,下载中止");
 				out.flush();
 				out.close();
 			}
 			boolean iss = ftp.retrieveFile(file.getName(), out);
 			System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~下载成功\r\n");
 			out.close();
 		} catch (Exception ex) {
 			ex.printStackTrace();
 			System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~下载失败\r\n");
 			return false;
 		}
 		return result;
 	}
 	
 	private InputStreamReader read;
	private BufferedReader reader;
	
 	private String preRead(String filepath) throws Exception {
		File file = new File(filepath);
		String ordertype = null;
		if (file.isFile() && file.exists()) {
			try {
				read = new InputStreamReader(new FileInputStream(file), "GBK");
				reader = new BufferedReader(read);
				StringBuffer FileContent = new StringBuffer();
				String temp = null;
				while ((temp = reader.readLine()) != null) {
					FileContent.append(temp);
				}
				System.out.println("订单内容为------------------>>>>> "+FileContent+" <<<<<------------------");
			} catch (FileNotFoundException e) {
				System.out.println("!!!!!!!!!!!!!!!!!没有找到合适的订单信息!!!!!!!!!!!!!!!");
				e.printStackTrace();
			} finally {
				reader.close();
				read.close();
//				file.delete();
			}
		}
		return ordertype;
	}
    
    public void gmRead(String remote) throws Exception {
    	boolean downloadResult = false;
		try {
			ftp.changeWorkingDirectory(remote);
			System.out.println("远程路径为*************************"+remote);
			FTPFile[] files = ftp.listFiles(remote); // 通过路径得到文件
			System.out.println("文件数量为*************************"+files.length);
			for (int i = 0; i < files.length; i++) {
				FTPFile file = files[i];
				if (file.isFile()) {
					downloadResult = this.download(file);// 下载文件 到本地读取路径
					if (downloadResult) {
						String ordertype = this.preRead("E:\\crmFiles\\");
					}
					/*//读取文件内容,将内容存数据库
					InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
					BufferedReader br = new BufferedReader(isr);
					String lineTxt = null;
					while ((lineTxt = br.readLine()) != null) {
						lineTxt+=lineTxt;
					}
					System.out.println(lineTxt);
					br.close();*/
				}else{
					System.out.println("************* 文件不存在 ************");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
    
	@Override
	public String threeDAndEightDReports(String orderNum, String FTPUrl, String FileType) {
		//抱怨单号、FTP地址、3D/8D文件类型
		System.out.println("1-------------"+orderNum);
		System.out.println("2-------------"+FTPUrl);
		System.out.println("3-------------"+FileType);
		if(null != orderNum && null != FTPUrl && null != FileType){
			//连接FTP
			boolean flag = this.ftp1();
			if(flag){
				try {
					//获取文件、解析文件内容,进库操作
					this.gmRead(FTPUrl);
					// 关闭连接
					this.disconnect();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}else{
				System.out.println("!!!!!!!!!!!!!!!!!FTP连接失败!!!!!!!!!!!!!!!!!");
			}
			
			return "success";
		}else{
			return "fail";
		}
	}
	
	
	public static void main(String[] args) {
		QualityComplainServicesImpl q = new QualityComplainServicesImpl();
		q.threeDAndEightDReports("001","/CRMINTERFACE","3D");
	}

	
	
	
	
}

————————————————————————
2020/09/16 22:51 戴卡五楼

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现从FTP获取文件下载到本地,并读取文件中的内容的成功案例 的相关文章

随机推荐

  • matlab获取矩阵的行数与列数

    matlab里面与其他高级语言里面获取数据的长度length方法不一样 matlab里面通过size 矩阵变量 返回一个 行数m 列数n 比如一个m n的矩阵A 通过size A 可以得到 m n 通过size A 1 可以得到行数m 通过
  • 关于如何使用neo4j-admin工具批量导入已处理好的csv数据(neo4j 社区版 5.5)

    数据格式有两种 一个是节点 一个是关系 节点类型数据头格式 xxx ID name LABEL 关系类型数据头格式 START ID END ID TYPE 这里不多赘述关于csv数据处理的问题 可以通过搜索找相关资料 本文主要解决的问题是
  • LSTM原理图解

    在解释LSTM原理前先来理解一下RNN的原理 RNN基本原理 原理简介 当我们处理与事件发生的时间轴有关系的问题时 比如自然语言处理 文本处理 文字的上下文是有一定的关联性的 时间序列数据 如连续几天的天气状况 当日的天气情况与过去的几天有
  • sqli-labs(39关-53关)

    目录 第三十九关 第四十关 第四十一关 第四十二关 第四十三关 第四十四关 第四十五关 第四十六关 第四十七关 第四十八关 第四十九关 第五十关 第五十一关 第五十二关 第五十三关 第三十九关 id 1 and 1 1 id 1 and 1
  • 图像处理-双边滤波原理

    双边滤波 Bilateral filter 是一种可以去噪保边的滤波器 之所以可以达到此效果 是因为滤波器是由两个函数构成 一个函数是由几何空间距离决定滤波器系数 另一个由像素差值决定滤波器系数 原理示意图如下 双边滤波器中 输出像素的值依
  • Midjourney如何集成到自己(个人/企业)的平台(二)

    前面一篇写了需要准备东西 如何注册discord平台账号 如何登录discord创建个人服务器把Midjourney机器人授权添加到个人服务器中 并且开通订阅 这篇文章主要讲如何自定义机器人 设置自定义机器人 并授权添加到个人服务器中 1
  • 【Arthas】Arthas mc内存动态编译原理

    1 概述 转载 Arthas mc内存动态编译原理 2 开篇 Arthas支持通过mc命令进行java文件的内存动态编译 mc Memory Compiler 内存编译器 编译 java文件生成 class 从JDK1 6开始引入了Java
  • 手握6项特许经营权,慧居科技如何展现“光与热”?

    作为国内三北地区第二大跨省供热服务供应商 慧居科技在7月10日即将港股上市 尽管目前受经济影响 港股市场处在低迷状态 但供热行业作为公用事业板块属刚性需求 由于受经济周期影响小 经营业绩稳定 反而成为市场的优质板块 吸引了不少的资本关注 7
  • Mac 电脑鼠标和触摸板滚动方向不一致的问题【已解决】

    当我们使用鼠标连接到 MacBook 时 会发现无论怎么设置 鼠标和触摸板的滚动方向都是相反的 导致不能同时使用鼠标和触摸板 解决方法 我安装了下面的程序 它只允许您反转鼠标的滚动行为 Scroll Reverser for Mac OS
  • 【人脸生成】HiSD-通过层级风格解耦实现图到图的迁移

    Image to image Translation via Hierarchical Style Disentanglement 厦大 西交 腾讯 清晰易读 用公布的模型在自有数据上实测不及预期 但仍是值得尝试的方法 这是我看的第一篇人脸
  • SQL基础常用语句:DDL、 DML、DQL

    下面跟我一起来学习SQL基础知识 一 SQL基础与DDL 1 1 SQL的概述 SQL全称 Structured Query Language 结构化查询语言 用于访问和处理数据库的标准的计算机语言 SQL语言1974年由Boyce和Cha
  • bitset优化例题

    1 bitset 优化背包 https loj ac p 515 题意 给 n 个 lt n 的数 每个数有取值范围 a i b i 令 x 为 n 个数的平方和 求能构成的 x 的个数 样例 5 1 2 2 3 3 4 4 5 5 6 2
  • js小程序ios日期解析失败NAN兼容

    小程序中ios使用 new Date 的时候 如果有 分隔符 将会解析失败 如果日期过短也会解析失败 比如只有 2022 08 年月这样也解析不出来 下面工具能解决上述问题 但是在手动创建字符串时间 建议使用 2022 08 01 斜杠等方
  • 第一次在linux服务器上部署项目,遇到的问题总结(包括mysql安装,jar打开遇到的问题)

    第一步 写代码 这一步没啥好说的 将代码写完 再考虑部署的事情 第二步 linux中安装mysql linux中安装mysql比在windows中安装mysql要难的多 其中遇到的问题是 一直安装不成功 老是会缺少 systemctl st
  • 解决Tensorflow读取MNIST数据集时网络超时问题

    最近在学习TensorFlow 比较烦人的是使用tensorflow examples tutorials mnist input data读取数据 from tensorflow examples tutorials mnist impo
  • cmake:file

    文件操作命令 这个命令专用于需要访问文件系统的文件和路径操作 对于其他仅处理语法方面的路径操作 请查看cmake path 命令 概要 Reading file READ
  • 南昊网上阅卷系统服务器地址,南昊网上阅卷系统全攻略

    扫描网上阅卷系统的分类 南昊扫描客观题阅卷系统 南昊扫描单机阅卷系统 南昊扫描网上阅卷系统 校园版 南昊扫描网上阅卷系统 中考版 南昊扫描网上阅卷系统 行业考试版 南昊扫描海军民主评议系统 南昊扫描教学质量评测系统 南昊扫描行风评议系统 网
  • hexo部署码云

    在本地搭建好博客后我们需要把博客部署在服务器上 这里没有购买服务器的情况下 就暂时部署在码云或者github上也是可以滴 如果之前部署过github的童鞋应该很快就上手了 都差不多的 这里就没有配置本地公钥了 直接使用是http链接方式 g
  • 利用k8s部署nginx

    这只是一个简单的demo测试 记录下第一次部署应用哈哈哈哈 运行指令创建有四个副本的nginx 这点和docker挺像的 root master kubectl run nginx image nginx latest replicas 4
  • Java实现从FTP获取文件下载到本地,并读取文件中的内容的成功案例

    package com aof web servlet import java io BufferedReader import java io File import java io FileInputStream import java