`

io流

    博客分类:
  • java
 
阅读更多
package My.Dom;

public class MovieBean {

private String name,actors,showtime,filmlong,area,type,writer,chinesename;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getActors() {
return actors;
}

public void setActors(String actors) {
this.actors = actors;
}

public String getShowtime() {
return showtime;
}

public void setShowtime(String showtime) {
this.showtime = showtime;
}

public String getFilmlong() {
return filmlong;
}

public void setFilmlong(String filmlong) {
this.filmlong = filmlong;
}

public String getArea() {
return area;
}

public void setArea(String area) {
this.area = area;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getWriter() {
return writer;
}

public void setWriter(String writer) {
this.writer = writer;
}

public String getChinesename() {
return chinesename;
}

public void setChinesename(String chinesename) {
this.chinesename = chinesename;
}



}

------------------------------------------------------------------------
package My.CreateFileUtil;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Date;

public class CreateFileUtil {
  /**
  * 创建目录
  * @param destDirName 目标目录名
  * @return 目录创建成功放回true,否则返回false
  */
  public static boolean createDir(String destDirName) {
  File dir = new File(destDirName);
  if (dir.exists()) {
  System.out.println("创建目录" + destDirName + "失败,目标目录已存在!");
  return false;
  }
  if (!destDirName.endsWith(File.separator)) {
  destDirName = destDirName + File.separator;
  }
  // 创建目标目录
  if (dir.mkdirs()) {
  System.out.println("创建目录" + destDirName + "成功!");
  return true;
  } else {
  System.out.println("创建目录" + destDirName + "失败!");
  return false;
  }
  }
  public static boolean createFile(String destFileName) {
  File file = new File(destFileName);
  if (file.exists()) {
  System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
  return false;
  }
  if (destFileName.endsWith(File.separator)) {
  System.out.println("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
  return false;
  }
  // 判断目标文件所在的目录是否存在
  if (!file.getParentFile().exists()) {
  // 如果目标文件所在的文件夹不存在,则创建父文件夹
  System.out.println("目标文件所在目录不存在,准备创建它!");
  if (!file.getParentFile().mkdirs()) {
  System.out.println("创建目标文件所在的目录失败!");
  return false;
  }
  }
  // 创建目标文件
  try {
  if (file.createNewFile()) {
  System.out.println("创建单个文件" + destFileName + "成功!");
  return true;
  } else {
  System.out.println("创建单个文件" + destFileName + "失败!");
  return false;
  }
  } catch (IOException e) {
  e.printStackTrace();
  System.out
  .println("创建单个文件" + destFileName + "失败!" + e.getMessage());
  return false;
  }
  }
  
  /**
  * 以字符为单位写文件。
  * @param fileName 文件名
  */
  public static void writeFileByChars(String fileName,String content){
  File file = new File(fileName);
  Writer writer = null;
  try {
  //打开文件输出流
  writer = new OutputStreamWriter(new FileOutputStream(file));
  writer.write(content);
  System.out.println("写文件" + file.getAbsolutePath() + "成功!");
  } catch (IOException e){
  System.out.println("写文件" + file.getAbsolutePath() + "失败!");
  e.printStackTrace();
  } finally {
  if (writer != null){
  try {
  //关闭输出文件流
  writer.close();
  } catch (IOException e1) {
  }
  }
  }
  }
  
}

------------------------------------------------------------------------
package My.Dom;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import My.CreateFileUtil.CreateFileUtil;

public class ParseXML {

public static String rootNodeName;

public static List readXMLFile(String inFile, String dirName)
throws Exception {
// 得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
// 从DOM工厂获得DOM解析器
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
return null;
}
Document doc = null;
try {
// 解析XML文档的输入流,得到一个Document
doc = db.parse(inFile);
// 对document对象调用normalize(),可以去掉xml文档中作为格式化内容的空白,
// 避免了这些空白映射在dom树中成为不必要的text node对象。
// 否则你得到的dom树可能并不是你所想象的那样。
// 特别是在输出的时候,这个normalize()更为有用。
doc.normalize();
} catch (DOMException dom) {
System.err.println(dom.getMessage());
return null;
} catch (IOException ioe) {
System.err.println(ioe);
return null;
}
List movieBeans = new ArrayList();
MovieBean movieBean = null;
// 得到XML文档的根节点“Movie”
Element root = doc.getDocumentElement();

rootNodeName = root.getNodeName();

CreateFileUtil.createDir(dirName + "/" + root.getNodeName());

NodeList nl = root.getChildNodes();

for (int i = 0; i < nl.getLength(); i++) {
Node nd = nl.item(i);
// 创建一个movie的Bean实例
movieBean = new MovieBean();
if (nd.getNodeType() == Node.ELEMENT_NODE) {
movieBean.setName(nd.getAttributes().getNamedItem("name")
.getNodeValue());
}

for (Node node = (Node) nd.getChildNodes(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equals("actors")) {
movieBean
.setActors(node.getFirstChild().getNodeValue());
}
if (node.getNodeName().equals("showtime")) {
movieBean.setShowtime(node.getFirstChild()
.getNodeValue());
}
if (node.getNodeName().equals("filmlong")) {
movieBean.setFilmlong(node.getFirstChild()
.getNodeValue());
}
if (node.getNodeName().equals("area")) {
movieBean.setArea(node.getFirstChild().getNodeValue());
}
if (node.getNodeName().equals("type")) {
movieBean.setType(node.getFirstChild().getNodeValue());
}
if (node.getNodeName().equals("writer")) {
movieBean
.setWriter(node.getFirstChild().getNodeValue());
}
if (node.getNodeName().equals("chinesename")) {
movieBean.setChinesename(node.getFirstChild()
.getNodeValue());
}
}
}
movieBeans.add(movieBean);
}
return movieBeans;
}

// destFileName 路径名
public static void parseList(List movieList, String destFileName) {
String fileName = null;
// JDK5.0的新for循环方法
for (Iterator iterator = movieList.iterator(); iterator.hasNext();) {
MovieBean mb = (MovieBean) iterator.next();
// 使用已经设置好了的元素
String name = mb.getName();
String actors = mb.getActors();
String showtime = mb.getShowtime();
String filmlong = mb.getFilmlong();
String area = mb.getArea();
String type = mb.getType();
String writer = mb.getWriter();
String chinesename = mb.getChinesename();
fileName = name + "_" + actors.substring(0, 7) + "_" + "...";
System.out.println("fileName = " + fileName);
// 创建XX目录下的txt文本
CreateFileUtil.createFile(destFileName + "/" + rootNodeName + "/"
+ fileName + ".txt");
StringBuffer sbf = new StringBuffer();
sbf.append("<movie name=" + "\"" + name + "\"" + ">" + "\n");
sbf.append("<actors>" + actors + "</actors>" + "\n");
sbf.append("<showtime>" + showtime + "</showtime>" + "\n");
sbf.append("<filmlong>" + filmlong + "</filmlong>" + "\n");
sbf.append("<area>" + area + "</area>" + "\n");
sbf.append("<type>" + type + "</type>" + "\n");
sbf.append("<writer>" + writer + "</writer>" + "\n");
sbf.append("<chinesename>" + chinesename + "</chinesename>" + "\n");
sbf.append("</movie>");
CreateFileUtil.writeFileByChars(destFileName + "/" + rootNodeName
+ "/" + fileName + ".txt", sbf.toString());
}
}
}



------------------------------------------------------------------------
package My.Client;

import java.util.List;

import My.Dom.ParseXML;

public class Client {

public static void main(String[] args){
  String inFileName = "No1.xml";
  String dirName = "E:/Team.1/RSSParser";
List movieBeans;
try {
movieBeans = ParseXML.readXMLFile(inFileName, dirName);
ParseXML.parseList(movieBeans, dirName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

------------------------------------------------------------------------

运行结果:
创建目录E:/Team.1/RSSParser/movies\成功!
java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.CharacterDataImpl$1
at My.Dom.ParseXML.readXMLFile(ParseXML.java:70)
at My.Client.Client.main(Client.java:14)
分享到:
评论

相关推荐

    IO流、Xml解析

    在IT领域,IO流(Input/Output Stream)和XML解析是两个重要的概念,它们在数据处理和信息交换中起着核心作用。 IO流是Java编程语言中的一个关键特性,用于处理程序与外部设备(如硬盘、网络、内存等)之间的数据...

    IO流pdf宝典

    ### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

    IO流 javaio java 流

    Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...

    map集合以及IO流

    本文将深入探讨`Map`集合的特性和遍历方式,以及`Set`特性的排序,并介绍如何使用`IO流`,特别是字节流和字符流。 首先,我们来了解`Map`集合的基本概念。`Map`接口是Java集合框架的一部分,它不直接继承自`...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    java基础之IO流

    ### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...

    Java基础篇:IO流.pdf

    Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...

    Java中文件IO流.pdf

    Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream ...

    IO流三种流方式的文本文件的复制

    在Java编程语言中,IO流(Input/Output流)是用来处理数据输入与输出的重要工具。在文本文件的复制过程中,通常会用到三种主要的流类型:字节流(Byte Stream)、字符流(Character Stream)以及缓冲流(Buffered ...

    IO流宝典.pdf

    Java IO流是Java平台核心特性之一,用于处理输入和输出数据。这个概念是Java编程中的基石,对于任何涉及数据传输或文件操作的应用程序都至关重要。《IO流宝典》这本书全面深入地探讨了这一主题,旨在帮助读者从基础...

    IO流的主要流

    Java中的IO流主要负责在不同数据源之间进行数据的传输,包括从文件系统、网络、内存等地方读取数据,以及向这些地方写入数据。IO流被设计为双工通道,既可以进行输入操作,也可以进行输出操作。Java的IO流体系结构...

    Java学生管理系统GUI+IO流

    Java学生管理系统GUI+IO流是一个适合初学者的项目,它主要展示了如何在没有数据库支持的情况下,利用Java的图形用户界面(GUI)和输入输出(IO)流来实现一个简易的学生和教师信息管理功能。这个系统可能包括账户...

    java之io流实例

    Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...

    彻底明白java中的IO流

    Java中的IO流是Java核心库java.io中的关键组成部分,它为程序提供了与外部资源交互的能力,包括文件读写、标准设备输入输出等。Java的IO流机制基于流的概念,流可以被视为数据传输的通道,数据按照序列化的方式从...

    Java图书管理系统(IO流版)(csdn)————程序.pdf

    Java图书管理系统(IO流版)知识点总结 本文总结了Java图书管理系统(IO流版)的主要知识点,涵盖了Java基础语法、流程控制、面向对象思想、封装、继承、多态、接口、异常、集合、IO流等多方面的知识。 一、Java...

    JAVA IO流技术

    Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...

    IO流的思维导图

    本人是初学者,在老师的指导下,将自身对Java中IO流的理解做成以下思维导图

    Java 的 IO流笔记.md

    ### Java IO流学习笔记 #### 一、IO流的四大抽象类 - **InputStream/OutputStream**:字节的输入输出流的抽象类。 - 数据单位:字节(8比特,范围0-255) - **Reader/Writer**:字符的输入输出流的抽象类。 - ...

    io流写入和读取

    "io流写入和读取"这个主题涵盖了如何使用IO流进行数据的存储和检索,通常涉及到文件操作、数据序列化以及与数据库的交互。在本篇文章中,我们将深入探讨这些关键知识点。 首先,IO流是Java中的一个基础概念,它允许...

Global site tag (gtag.js) - Google Analytics