`
gao_20022002
  • 浏览: 160230 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

小项目总结之五:文件读写问题

    博客分类:
  • Java
阅读更多

读取EXCEL文件、XML文件以及TXT文件模式。

1、Excel的读取。

public static Map<String, List<Content>> parse(String file) {
		Workbook book = null;
		Map<String, List<Content>> map = new HashMap<String, List<Content>>();
		List<Content> list = null;
		try {
			book = Workbook.getWorkbook(new File(file));
			int sheets = book.getNumberOfSheets();
			Sheet se = null;
			for (int i = 0; i < sheets; i++) {
				se = book.getSheet(i);
				list = new ArrayList<Content>();
				for (int j = 1; j < se.getRows(); j++) {
					list.add(data(se, j));
				}
				map.put(se.getName(), list);
			}
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (book != null) {
				book.close();
			}
		}
		return map;
	}

	private static Content data(Sheet se, int row) {
		Cell id, name, author, time, description, content;
		Content contents = new Content();
		id = se.getCell(0, row);
		name = se.getCell(1, row);
		author = se.getCell(2, row);
		time = se.getCell(3, row);
		description = se.getCell(4, row);
		content = se.getCell(5, row);
		contents.setId(id.getContents());
		contents.setName(name.getContents());
		contents.setAuthor(author.getContents());
		contents.setTime(time.getContents());
		contents.setDescription(description.getContents());
		contents.setContent(content.getContents());
		return contents;
	}

 

此处注意需要加入Excel的解析jar包:jxl.jar。

2、XML的读取

XML的样式: 

<list desc="news content xml" start="1" size="1" total="1">

	<item type="news">
		<id>00</id>
		<name>文章标题</name>
		<author>你是谁</author>
		<time>2008-07-08</time>
		<description>
		自己的描述内容
                     </description>
		<content>src/content/database/news_cbdwt.txt</content>
	</item>

</list>

  

content/database/news.txt 读取文件:

public static List<Content> parse(String file) {
		List<Content> list = new ArrayList<Content>();
		NodeList items = readFile(file, "item");
		Element node = null;
		NodeList ids;
		NodeList names;
		NodeList authors;
		NodeList times;
		NodeList descs;
		NodeList contents;
		Content content;
		for (int i = 0; i < items.getLength(); i++) {
			content = new Content();
			node = (Element) items.item(i);
			ids = node.getElementsByTagName("id");
			if (ids.getLength() == 1) {
				content.setId(((Text) ((Element) ids.item(0)).getFirstChild())
						.getNodeValue());
			}
			names = node.getElementsByTagName("name");
			if (names.getLength() == 1) {
				content.setName(((Text) ((Element) names.item(0))
						.getFirstChild()).getNodeValue());
			}
			authors = node.getElementsByTagName("author");
			if (authors.getLength() == 1) {
				content.setAuthor(((Text) ((Element) authors.item(0))
						.getFirstChild()).getNodeValue());
			}
			times = node.getElementsByTagName("time");
			if (times.getLength() == 1) {
				content.setTime(((Text) ((Element) times.item(0))
						.getFirstChild()).getNodeValue());
			}
			descs = node.getElementsByTagName("description");
			if (descs.getLength() == 1) {
				content.setDescription(((Text) ((Element) descs.item(0))
						.getFirstChild()).getNodeValue());
			}
			contents = node.getElementsByTagName("content");
			if (contents.getLength() == 1) {
				content.setContent(((Text) ((Element) contents.item(0))
						.getFirstChild()).getNodeValue());
			}
			list.add(content);
		}

		return list;
	}

	private static NodeList readFile(String file, String item) {
		File f = new File(file);
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = null;
		try {
			builder = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		Document doc = null;
		try {
			doc = builder.parse(f);
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		NodeList items = doc.getElementsByTagName(item);
		return items;
	}

 

 

3、读取TXT文件。

public static char[] file(String file) {
		char[] chars = null;
		FileReader in = null;
		try {
			in = new FileReader(new File(file));
			chars = new char[length(file)];
			int ch;
			int i = 0;
			while ((ch = in.read()) != -1) {
				chars[i] = (char) ch;
				i++;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return chars;
	}

  

 

值得注意的是,我是直接采用了FileReader,因为TXT文件直接采用GBK的编码,在进入网页时如果编码正确的话不会引起乱码。

一般来说读取bytep[]应该是最好的,可以支持多样化,但是解析的过程麻烦了一点。

有时间的话可以分析分析rar文件的解析方式。

直接流处理的问题。 有没有必要进行XML的文件流分析??似乎没必要,在目前此种环境下。

分享到:
评论

相关推荐

    xml读写项目总结

    里面包括:1、封装好的XML文件的读和写工程;2、tinyxml库;3、xmlPPT讲解。

    asp 读写 excel文件 asp读写.xls 组件+教程+组件安装+代码例子(可运行).zip

    asp 读写 excel文件 asp读写.xls 组件+教程+组件安装+代码例子(可运行) 我看网上有人把 asp操作excel 技术总结 进行出售,刚在项目中用到,就分享出来,提供给大家免费试用。Ade下载地址: ...Microsoft Access ...

    ExcelReadShow_c#读写excel文件_

    1.调用微软office接口 该方式要求客户端必须安装微软office。 、安装微软office 2、将Microsoft.Office.Interop.Excel.dll拷贝到项目框架并引用。

    VC 读写XML文件实例运用

    VC项目中实现读写XML文件,包中有两个工程启动文件--VC6的.dsp和VS2010的.sln文件。代码中注释详细,包中另附“xml学习笔记.txt”文档,总结了针对xml读写操作的常用函数。

    Python文件操作最全笔记.pdf

    【付费培训课程自己总结的python文件操作笔记,Typora工具总结的,有图文,有代码块,可以说很全了,很适合初学或者由做项目有遗忘的时候补救】 一、文件操作 1. 文件基本操作 (1)文件操作os模块 (2)递归实现...

    读写Word操作NPIO库文件

    NPOI库文件的使用相对简单,你只需要将其导入到Unity项目中,并在代码中引用相关命名空间即可开始使用。通过调用NPOI提供的API,你可以按照自己的需求进行Word文档的操作。 总结来说,NPOI是一个方便易用的Unity库...

    c语言版--学生信息管理系统 《C语言程序设计实验》项 目 报 告

    项目三:学生信息管理系统的文件读写功能 每一项里均含有 一、学生信息管理系统功能 二、学习目标 三、概要设计 四、详细设计和编码 五、调试分析 六、测试结果 七、项目总结 八、项目成绩 文件的源代码可以查看这里...

    大二下面向对象 Java六次实验报告+思维导图总结xmind文件和图片+项目总结报告 +netbeans安装包 大连工业

    通过文本文件内容的读写访问, 实现对象状态的长期保存和恢复. 实验五 继承 一、实验目的 通过对具体类的继承(扩充), 为程序增加新的功能. 实验六 多态性 一、实验目的 通过抽象类, 实现对继承来的方法的替换.

    java知识点总结

    IO操作:结合路径问题用最基础的IO类编写的文件读写删拷贝等一系列操作 正则表达式:源于官方网的一遍报道,里面有自己添加的一些案例等,只要一页,你就能掌握基本的正则表达式 小数格式化:一个工具类,想保留一位...

    嗖嗖移动大厅小项目

    在Java小白学过 面向对象设计的思想 并且熟练掌握封装、继承、多态、接口的使用 理解合理运用异常处理的方法 掌握集合框架存储数据 掌握I/O操作实现对文件的读写 之后,可练习此小项目

    利用C/C++二进制读写png文件的方法示例

    最近在做项目的时候遇到了这个问题,所以想着总结下,方法自己和有需要的朋友,下面这篇文章主要介绍了利用C/C++二进制读写png文件的方法,需要的朋友可以参考借鉴,下面来一起看看吧。

    长期总结的电脑技巧小札

     Smartdrv.exe这个文件对于熟悉DOS的朋友肯定很清楚,主要作用是为磁盘文件读写增加高速缓存。大家知道内存的读写速度比磁盘高得多,如果将内存作为磁盘读写的高速缓存可以有效提高系统运行效率。Smartdrv.exe这个...

    精通并发与netty 无加密视频

    第1讲:学习的要义 第2讲:Netty宏观理解 第3讲:Netty课程大纲深度解读 第4讲:项目环境搭建与Gradle配置 ...第91讲:Netty自定义协议与TCP粘包拆包问题解决之道 第92讲:精通并发与Netty课程总结与展望

    22.Twisted使用总结.zip

    文件读写基本操作 CSV和Excel文件的处理 文本文件编码和解码 数据存储与持久化 数据库的使用和操作(如MySQL、MongoDB等) 数据存储格式的选择和优化 实际案例分析 应用所学知识解决真实世界中的爬虫和IO问题 爬虫...

    网管教程 从入门到精通软件篇.txt

    小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。  Bootcfg  bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。  含有下列参数的 bootcfg 命令仅在...

    数据结构运动会分数统计实验报告

    1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分, 3)可以按学校编号或名称、学校总分、男女团体总分排序输出; 4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的...

    C++/Qt 国际象棋 课设(全注释)附赠5000+课设报告

    包含文件读写、多线程、重载与多态、qt ui、插入音乐与图片、动态数组等多种知识,绝对物超所值。 下载提示:需要把文件夹名称改成英文。需要把登录注册忘记密码的文件地址(现在是player.txt)改成自己本地的文件。...

    IO流pdf宝典

    JAVAIO流总结宝典,分享给大家,总结较为全面

    java 面试题 总结

    抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性...

    Hadoop从入门到上手企业开发

    034 讲解HDFS 文件读写流程 035 详解HDFS API之FileSystem方式基本操作一 036 HDFS Java API 两种方式介绍及使用URL API详解一 037 使用URL API详解二 038 使用HDFS FileSystem API 详解 039 HDFS文件系统读写流程及...

Global site tag (gtag.js) - Google Analytics