生成文件且通过FTP上传到别的服务器的指定路劲

2024-05-25 17:32

本文主要是介绍生成文件且通过FTP上传到别的服务器的指定路劲,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.创建文件路劲

String miguPath = this.getClass().getClassLoader().getResource(File.separator).getPath()+ "template/export/synMigu/";
File file = new File(miguPath);
if (!file.exists()) {if(!file.mkdirs()){log.error("同步**+创建文件夹失败");}}

2.文件名命名

File txtFile = new File(miguPath + fileName + ".txt");


3.创建FTP文件

fileInfoService.createFtpFile(fileInfo,settMonth,fileName,txtFile);

3.1查询数据并写入到txt文件中,列头和列内容分来写入。

   

 public void createFtpFile(FileInfo fileInfo,String settMonth,String fileName,File file) throws IOException {List rows = null;String DM_SCHEMA = propertyManager.get(SystemConfigKey.DM_SCHEMA_KEY);StringBuffer queryCount = new StringBuffer("");StringBuffer queryPage = null;String querySql=fileInfo.getExecuteSql();querySql=querySql.replace(":settleMonth", settMonth);querySql=querySql.replace(":DM_SCHEMA", DM_SCHEMA);queryCount.append("select count(1) from (").append(querySql).append(") a");Integer count = jdbcTemplate.queryForObject(queryCount.toString(),Integer.class);//写入文件列头List<String[]> dataList=getFileHeader(fileInfo.getName());writeTxtForString(dataList,fileName,file);try {if(count <= Constant.PAGE_SIZE){log.info("["+fileInfo.getName() + "]执行sql:" + querySql);rows = jdbcTemplate.queryForList(querySql);writeTxt(rows, fileName ,file);}else {for (int i = 0; i < (count / Constant.PAGE_SIZE) + 1; i++) {queryPage = new StringBuffer("");queryPage.append(querySql).append(" limit ");queryPage.append(i * Constant.PAGE_SIZE).append(",").append(Constant.PAGE_SIZE).append(" ");rows = jdbcTemplate.queryForList(queryPage.toString());writeTxt(rows, fileName, file);log.info("["+fileInfo.getName() + "]执行sql:" + querySql);}}}catch (Exception e){throw e;}}///获取列头public List<String []> getFileHeader(String name){List<String[]> dataList=new ArrayList<>();if(("违约核减").equals(name)){String[] data = {"账期", "企业代码", "业务代码", "渠道结算代码", "业务名称", "金额", "备注"};dataList.add(data);} return dataList;}//写入列头public void writeTxtForString(List rows, String fileName, File file) throws IOException {// 写入txttry {Writer fw = null;if(file == null){file = new File(fileName);}try {fw = new OutputStreamWriter(new FileOutputStream(file,true), "UTF-8");PrintWriter pw = new PrintWriter(fw);for (Object line : rows) {String [] lineArray = (String []) line;StringBuffer linebuffer = new StringBuffer();for (String string:lineArray) {if(string!=null){linebuffer.append(string).append(",");}else{linebuffer.append(",");}}linebuffer.deleteCharAt(linebuffer.length() - 1);linebuffer.append("\r\n");pw.printf(linebuffer.toString(), "\r\n");}pw.flush();pw.close();} catch (Exception e) {throw e;}finally {if(fw!=null) {fw.close();}}} catch (Exception e) {throw e;}}//写入数据库内容public void writeTxt(List rows, String fileName, File file) throws IOException {// 写入txttry {Writer fw = null;if(file == null){file = new File(fileName);}try {fw = new OutputStreamWriter(new FileOutputStream(file,true), "UTF-8");PrintWriter pw = new PrintWriter(fw);for (Object line : rows) {Map<String, Object> lineMap = (Map<String, Object>) line;StringBuffer linebuffer = new StringBuffer();for (Map.Entry<String, Object> entry : lineMap.entrySet()) {if(entry.getValue()!=null && !"".equals(entry.getValue())){linebuffer.append(entry.getValue()).append(",");}else{linebuffer.append(" ,");}}linebuffer.deleteCharAt(linebuffer.length() - 1);linebuffer.append("\r\n");pw.printf(linebuffer.toString(), "\r\n");}pw.flush();pw.close();} catch (Exception e) {throw e;}finally {if(fw!=null) {fw.close();}}} catch (Exception e) {throw e;}}

 

然后将文件通过ftp上传到指定服务器的指定路劲

注:ftpJSch请查看 传送门 ftpJsch工具

try {//连接服务器,通过host,port,用户,密码ftpJSch = FtpJSch.getConnect(host, port, username, password);//将in流上传到ftp指定路劲,并指定文件名ftpJSch.upload(in, ftpPath, fileName + ".txt");ftpJSch.close();fileInfoService.updateSynMigu(fileInfo.getName(), settMonth, fileInfo.getId(),SynStatus.SECCESS.getStatus());LogService.createLog(fileInfo.getName(), "生成文件成功", "FTP生成文件同步到TXT成功");log.info("同步**+ 生成文件成功!id=" + id);if (txtFile.exists()) {if (txtFile.delete()) {log.info("删除本地****平台 生成文件成功!id=" + id);}}return new ResultObject<Object>(true, "生成文件成功!", "");}catch (Exception e){throw e;}

 

这篇关于生成文件且通过FTP上传到别的服务器的指定路劲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002163

相关文章

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I