`
gao_20022002
  • 浏览: 164783 次
  • 性别: 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的文件流分析??似乎没必要,在目前此种环境下。

分享到:
评论

相关推荐

    Codesys:文件读写(CAA File库)

    CAA File库,全称为Common Automation Architecture File Access Library,是CODESYS提供的用于文件读写的标准库之一。与SysFile库不同的是,CAA File库提供了更为高级的接口,使得开发者能够更方便地进行文件处理...

    android文件读写权限

    总结来说,Android文件读写权限管理是一个复杂的过程,开发者需要在`AndroidManifest.xml`中声明权限,并在Android 6.0及以上版本中处理运行时权限请求。随着Android版本的更新,如Android Q,文件访问方式也会相应...

    C++文件读写_c++文件读写_文件操作c++_c++文件读写_

    总结,C++文件读写涉及的主要知识点包括:文件流的概念,文件的打开与关闭,数据的读写,文件定位,错误处理,以及打开模式等。通过这些知识点,开发者可以实现对文件的高效、灵活操作。在实际项目中,根据需求选择...

    csv文件读写操作

    总结,CSV文件读写在VS2015的MFC环境中主要涉及文件操作、字符串处理和用户界面交互。通过合理的编程设计,可以实现高效且易维护的CSV数据管理功能。在实际项目中,还需要考虑数据验证、错误处理、用户体验等多个...

    C++ 的各种文件读写操作总结

    【C++ 文件读写操作详解】 在C++编程中,文件操作是不可或缺的一部分,无论是存储数据、记录日志还是与其他程序交互,都需要进行文件的读写。C++Builder提供了多种方式进行文件操作,包括基于C的文件操作、C++特有...

    Qt之读写ini文件

    总结,Qt的`QSettings`类为`.ini`文件的读写提供了便利。通过正确处理编码问题,我们可以安全地在`.ini`文件中存储和读取中文字符串,实现跨平台的配置管理。在实际项目中,可以根据需求灵活运用这些功能,以实现...

    VC实现读写文件的三种方法

    总结,VC++中实现文件读写有多种方法,包括Linux的文件句柄方式、MFC的CFile类以及标准库的文件指针方式。每种方法都有其适用场景和优缺点,开发者应根据项目需求选择合适的方式。在处理二进制文件时,确保采用正确...

    xml读写项目总结

    本项目是对XML文件读写操作的综合总结,旨在提供一个实用的XML处理工具集。 首先,我们要关注的是“封装好的XML文件的读和写工程”。在编程中,通常我们会创建类或函数库来简化XML文件的操作。读取XML文件时,我们...

    INI文件读写类

    总结来说,这个“INI文件读写类”是用VC6.0开发的,用于处理配置文件的读写操作,支持多种数据类型和UNICODE编码,提供了一种高效、方便的方式来管理和维护应用程序的配置信息。它包含的源代码和项目文件可以帮助...

    Android读写配置文件

    总结来说,Android的配置文件读写主要涉及SharedPreferences和File操作。对于简单的偏好设置,SharedPreferences提供了方便快捷的方法;而对于复杂数据结构或自定义格式,直接操作文件(如XML或JSON)会更有灵活性。...

    Delphi文件操作全攻略:深入文件读写与处理的艺术

    ### Delphi 文件操作全攻略:深入文件读写与处理的艺术 #### 一、Delphi简介与特点 Delphi 是一种高性能的集成开发环境 (IDE) 和面向对象的编程语言,以其出色的开发能力和广泛的适用性而著称。它最初由 Borland ...

    Linux读写配置文件

    总结来说,实现跨平台的Linux配置文件读写功能,你需要掌握C++的文件流操作,理解配置文件的结构,以及如何处理跨平台兼容性问题。通过以上步骤,你可以创建一个简单的C++程序,实现类似Windows的配置文件读写功能,...

    android 内存 文件读写操作

    三、文件读写操作 1. **创建文件**:首先,我们需要创建一个`File`对象表示文件路径,然后使用`createNewFile()`方法创建新文件。例如: ```java File file = new File(Environment.getExternalStorageDirectory...

    DSP CCS3.3 文件读写操作

    总结,DSP中的文件读写操作是系统开发中不可或缺的一部分。通过熟悉和掌握CCS 3.3中的文件I/O函数和可能的DSP库函数,开发者能够有效地实现日志记录、数据存储与加载等功能,从而提升项目的稳定性和可维护性。

    C#进行dat文件读写操作

    在编程领域,C#是一种广泛使用的面向对象的编程语言,尤其在Windows应用程序开发和游戏开发中扮演着...在实际项目中,根据具体需求选择合适的读写方法至关重要,同时,测试文件的使用能帮助确保代码的健壮性和准确性。

    深潜数据海洋:Java文件读写全面解析与实战指南

    ### 深潜数据海洋:Java文件读写全面解析与实战指南 #### 第一章:走进文件流的世界 —— 字节与字符的交响 在Java中,文件读写是通过流来实现的,流是一种从源头到目的地的数据传输通道。Java支持两种基本类型的...

    纯C语言读写ini配置文件

    提供的两个`.mht`文件,`[ 永远的UNIX C源码通用C语言函数:文本文件有关操作,_CFG-_INI类配置文件读写 ].mht` 和 `[ 永远的UNIX C源码通用C语言函数:文本文件有关操作,_CFG-_INI类配置文件读写(对应_C的头文件 )...

    U盘文件读写模块的说明,单片机读写U盘

    总结,通过单片机配合CH375芯片实现U盘文件读写是一项综合性的任务,涵盖了硬件接口设计、文件系统理解和软件编程等多个方面。理解并掌握这些知识点,可以让我们在实际项目中灵活运用,实现高效稳定的单片机与U盘...

    用CFile类简单读写文件

    总结来说,`CFile`类是MFC中进行文件操作的一个重要工具,它简化了文件读写的过程。通过熟练掌握`CFile`的使用,开发者可以更高效地处理文件相关的任务,实现更健壮的程序。在实际编程中,应结合错误处理和适当的...

Global site tag (gtag.js) - Google Analytics