生成文件且通过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

相关文章

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

java创建xls文件放到指定文件夹中实现方式

《java创建xls文件放到指定文件夹中实现方式》本文介绍了如何在Java中使用ApachePOI库创建和操作Excel文件,重点是如何创建一个XLS文件并将其放置到指定文件夹中... 目录Java创建XLS文件并放到指定文件夹中步骤一:引入依赖步骤二:创建XLS文件总结Java创建XLS文件并放到指定文件

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

C# FTP调用的实现示例

《C#FTP调用的实现示例》本文介绍了.NET平台实现FTP/SFTP操作的多种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 .NET 自带 FtpWebRequest 实现 FTP 操作1.1 文件上传1.2

C#自动化生成PowerPoint(PPT)演示文稿

《C#自动化生成PowerPoint(PPT)演示文稿》在当今快节奏的商业环境中,演示文稿是信息传递和沟通的关键工具,下面我们就深入探讨如何利用C#和Spire.Presentationfor.NET... 目录环境准备与Spire.Presentation安装核心操作:添加与编辑幻灯片元素添加幻灯片文本操

Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)

《Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)》在职场中,Word文档是公认的好伙伴,但你有没有被它折磨过?批量生成合同、制作报告以及发放证书/通知等等,这些重复、低效... 目录重复性文档制作,手动填充模板,效率低下还易错1.python-docx入门:Word文档的“瑞士