本文源码:GitHub·点这里 || GitEE·点这里

一、文档类型简介

1、XML文档

XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格式等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。适合网络传输,提供统一的方法来描述和交换应用程序的结构化数据。

2、CSV文档

CSV文档,以逗号分隔文档内容值,其文件以纯文本形式存储结构数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号。CSV是一种通用的、相对简单的文件格式,通常被用在大数据领域,进行大规模的数据搬运操作。

二、XML文件管理

1、Dom4j依赖

Dom4j是基于Java编写的XML文件操作的API包,用来读写XML文件。具有性能优异、功能强大和简单易使用的特点。

<dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version>
</dependency>
<dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.6</version>
</dependency>

2、基于API封装方法

涉及对XML文件读取、加载、遍历、创建、修改、删除等常用方法。

public class XmlUtil {/*** 创建文档*/public static Document getDocument (String filename) {File xmlFile = new File(filename) ;Document document = null;if (xmlFile.exists()){try{SAXReader saxReader = new SAXReader();document = saxReader.read(xmlFile);} catch (Exception e){e.printStackTrace();}}return document ;}/*** 遍历根节点*/public static Document iteratorNode (String filename) {Document document = getDocument(filename) ;if (document != null) {Element root = document.getRootElement();Iterator iterator = root.elementIterator() ;while (iterator.hasNext()) {Element element = (Element) iterator.next();System.out.println(element.getName());}}return document ;}/*** 创建XML文档*/public static void createXML (String filePath) throws Exception {// 创建 Document 对象Document document = DocumentHelper.createDocument();// 创建节点,首个节点默认为根节点Element rootElement = document.addElement("project");Element parentElement = rootElement.addElement("parent");parentElement.addComment("版本描述") ;Element groupIdElement = parentElement.addElement("groupId") ;Element artifactIdElement = parentElement.addElement("artifactId") ;Element versionElement = parentElement.addElement("version") ;groupIdElement.setText("SpringBoot2");artifactIdElement.setText("spring-boot-starters");versionElement.setText("2.1.3.RELEASE");//设置输出编码OutputFormat format = OutputFormat.createPrettyPrint();File xmlFile = new File(filePath);format.setEncoding("UTF-8");XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile),format);writer.write(document);writer.close();}/*** 更新节点*/public static void updateXML (String filePath) throws Exception {Document document = getDocument (filePath) ;if (document != null){// 修改指定节点List elementList = document.selectNodes("/project/parent/groupId");Iterator iterator = elementList.iterator() ;while (iterator.hasNext()){Element element = (Element) iterator.next() ;element.setText("spring-boot-2");}//设置输出编码OutputFormat format = OutputFormat.createPrettyPrint();File xmlFile = new File(filePath);format.setEncoding("UTF-8");XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile),format);writer.write(document);writer.close();}}/*** 删除节点*/public static void removeElement (String filePath) throws Exception {Document document = getDocument (filePath) ;if (document != null){// 修改指定节点List elementList = document.selectNodes("/project/parent");Iterator iterator = elementList.iterator() ;while (iterator.hasNext()){Element parentElement = (Element) iterator.next() ;Iterator parentIterator = parentElement.elementIterator() ;while (parentIterator.hasNext()){Element childElement = (Element)parentIterator.next() ;if (childElement.getName().equals("version")) {parentElement.remove(childElement) ;}}}//设置输出编码OutputFormat format = OutputFormat.createPrettyPrint();File xmlFile = new File(filePath);format.setEncoding("UTF-8");XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile),format);writer.write(document);writer.close();}}public static void main(String[] args) throws Exception {String filePath = "F:\\file-type\\project-cf.xml" ;// 1、创建文档Document document = getDocument(filePath) ;System.out.println(document.getRootElement().getName());// 2、根节点遍历iteratorNode(filePath);// 3、创建XML文件String newFile = "F:\\file-type\\project-cf-new.xml" ;createXML(newFile) ;// 4、更新XML文件updateXML(newFile) ;// 5、删除节点removeElement(newFile) ;}
}

3、执行效果图

三、CSV文件管理

1、CSV文件样式

这里不需要依赖特定的Jar包,按照普通的文件读取即可。

2、文件读取

@Async
@Override
public void readNotify(String path, Integer columnSize) throws Exception {File file = new File(path) ;String fileName = file.getName() ;int lineNum = 0 ;if (fileName.startsWith("data-")) {InputStreamReader isr = new InputStreamReader(new FileInputStream(file),"GBK") ;BufferedReader reader = new BufferedReader(isr);List<DataInfo> dataInfoList = new ArrayList<>(4);String line  ;while ((line = reader.readLine()) != null) {lineNum ++ ;String[] dataArray = line.split(",");if (dataArray.length == columnSize) {String cityName = new String(dataArray[1].getBytes(),"UTF-8") ;dataInfoList.add(new DataInfo(Integer.parseInt(dataArray[0]),cityName,dataArray[2])) ;}if (dataInfoList.size() >= 4){LOGGER.info("容器数据:"+dataInfoList);dataInfoList.clear();}}if (dataInfoList.size()>0){LOGGER.info("最后数据:"+dataInfoList);}reader.close();}LOGGER.info("读取数据条数:"+lineNum);
}

3、文件创建

@Async
@Override
public void createCsv(List<String> dataList,String path) throws Exception {File file = new File(path) ;boolean createFile = false ;if (file.exists()){boolean deleteFile = file.delete() ;LOGGER.info("deleteFile:"+deleteFile);}createFile = file.createNewFile() ;OutputStreamWriter ost = new OutputStreamWriter(new FileOutputStream(path),"UTF-8") ;BufferedWriter out = new BufferedWriter(ost);if (createFile){for (String line:dataList){if (!StringUtils.isEmpty(line)){out.write(line);out.newLine();}}}out.close();
}

4、编写测试接口

这里基于Swagger2管理接口测试 。

@Api("Csv接口管理")
@RestController
public class CsvWeb {@Resourceprivate CsvService csvService ;@ApiOperation(value="文件读取")@GetMapping("/csv/readNotify")public String readNotify (@RequestParam("path") String path,@RequestParam("column") Integer columnSize) throws Exception {csvService.readNotify(path,columnSize);return "success" ;}@ApiOperation(value="创建文件")@GetMapping("/csv/createCsv")public String createCsv (@RequestParam("path") String path) throws Exception {List<String> dataList = new ArrayList<>() ;dataList.add("1,北京,beijing") ;dataList.add("2,上海,shanghai") ;dataList.add("3,苏州,suzhou") ;csvService.createCsv(dataList,path);return "success" ;}
}

四、源代码地址

文中涉及文件类型,在该章节源码ware18-file-parent/case-file-type目录下。

GitHub·地址
https://github.com/cicadasmile/middle-ware-parent
GitEE·地址
https://gitee.com/cicadasmile/middle-ware-parent

推荐阅读:Spring框架基础

《核心组件总结,基础环境搭建》

《Bean的装配,作用域,生命周期》

《核心思想IOC容器总结,案例演示》

《AOP编程概念,几种实现方式演示》

《事务管理机制,和实现方式》

《Mvc架构模式简介,执行流程详解》

文件系统(02):基于SpringBoot框架,管理Xml和CSV文件类型相关推荐

  1. boot spring 解析csv_文件系统(02):基于SpringBoot框架,管理Xml和CSV文件类型-阿里云开发者社区...

    一.文档类型简介 1.XML文档 XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格 ...

  2. 基于SpringBoot框架仿饿了么外卖平台系统 可二次开发带手机端后台管理

    仿饿了么外卖平台系统,带手机端后台管理. 核心框架:Spring Boot 数据库层:Spring data jpa/Spring data mongodb 数据库连接池:Druid 缓存:Ehcac ...

  3. 基于SpringBoot框架的管理系统【完整项目源码】

    基于SpringBoot框架的管理系统 介绍 基于SpringBoot框架的管理系统 简洁版 : 实现 登录 . 注册 . 增 . 删 . 改 . 查 : 可继续完善增加前端.校验.其他功能等: 可作 ...

  4. 基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计-附源码271611

    springboot古风乐曲网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法, ...

  5. 基于SpringBoot框架的古风乐曲网站的设计与实现毕业设计源码271611

    springboot古风乐曲网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法, ...

  6. (附源码)基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计271611

    springboot古风乐曲网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法, ...

  7. 基于SpringBoot框架图片销售网站的设计与实现

    图片销售系统是为商户提供的在线销售管理系统,本系统的研发设计能够增加商户的图片商品宣传和推广,提升客流量和订单量,增加商户的营业收益.原有的图片销售管理采用手工管理的方式,各种图片宣传和订单接收都采用 ...

  8. 基于springboot框架开发的作业提交与批改系统

    此系统是基于springboot框架开发的作业提交与批改系统,系统项目是maven项目,项目层次分离,易于二次开发和学习, 系统功能 分为教师,学生两类用户,每一角色具有不同的功能权限. 教师功能权限 ...

  9. 基于springboot框架的快递代取跑腿服务系统

    目录 摘 要 1 Abstract 2 1.项目简介 4 1.1开发运行环境: 4 1.2需求分析 4 1.3数据流图 5 2.数据库设计 6 2.1表结构 6 2.2ER图 7 3.项目开发 7 3 ...

最新文章

  1. Perl 通过SMTP发送正文为HTML格式的邮件
  2. 束文圣和黄立南Nature综述极端环境中的微生物多样性
  3. Visual Studio 2012/2010/2008 远程调试
  4. Spring 中 Bean 的生命周期
  5. ms+sql迁移到mysql_mssql数据迁移到mysql
  6. 二叉查找树的C语言实现(一)
  7. 10.21 crond定时任务练习
  8. 融合CDN,纾解数据拥塞之困
  9. C#三层开发做学生管理系统
  10. Win7的常用快捷键以及设置
  11. linux软盘镜像下载,软盘镜像Image文件制作(WinImage Pro)
  12. Java毕设项目——大学生社团管理系统(java+SSM+Maven+Mysql+Jsp)
  13. 用continue计算100以内奇数和_Python入门19break和continue
  14. Vs2010中文版 使用 .net 3.5 时,智能提示英文变中文
  15. [转载]刘兴亮|给同一天发的这三款社交产品算算命
  16. ALLEGRO如何制作封装
  17. 笔记本触控板没有反应
  18. 用开源力量抗击新冠疫情!腾讯作为创始成员加入Linux基金会公共卫生计划
  19. Dojo 1.6 最新官方教程: Dojo DOM 函数
  20. 语言模型 Probability Based: Language Model

热门文章

  1. (计算机组成原理)第四章指令系统:本章习题
  2. Linux动态库的导出控制
  3. linux ipconfig和route 命令
  4. USACO-Section1.3 Dual Palindromes (进制转换和回文数)
  5. Python判断两个域名的主域名是否相同
  6. xmlrpc.php 漏洞利用
  7. golang Println、Printf、Sprintf的区别
  8. Linux lsof命令使用详细
  9. QT界面布局、系统信号和槽、启动进程、EDIT回车快捷键、正常信号和槽、QMessageBox、UIC使用(界面重新生成)
  10. PRISM ‘VS100COMNTOOLS’ not set. Cannot set the build environment