`
leifeng2
  • 浏览: 142465 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java 读取dat文件&&写入xml文件

    博客分类:
  • java
阅读更多
一、20090619084650625.dat文件如下


<OffenceSnap>
<snap_id>17127</snap_id>
<snap_nbr>20090619084650625</snap_nbr>
<snap_frames>3</snap_frames>
<snap_type>雷达抓拍</snap_type>
<snap_type_int>2</snap_type_int>
<offence_time>2009-06-19 08:46:50</offence_time>
<road>G107国道1175公里处</road>
<road_code>1301</road_code>
<road_distance>1175000</road_distance>
<drive_pane>0</drive_pane>
<drive_direction/>
<black_list_type/>
<black_list_type_code/>
<offence/>
<offence_code>1303</offence_code>
<licence_plate/>
<plate_type/>
<plate_type_code/>
<plate_color/>
<plate_color_code/>
<vehicle_owner/>
<vehicle_color_code/>
<vehicle_color/>
<vehicle_addr/>
<vehicle_model/>
<vehicle_xh/>
<vehicle_owner_tel/>
<vehicle_audit_date/>
<device_no>000001</device_no>
<base_velocity>0</base_velocity>
<obj_velocity>80</obj_velocity>
<max_velocity>70</max_velocity>
<min_velocity>0</min_velocity>
<snap_status>新记录</snap_status>
<snap_status_int>0</snap_status_int>
<duty_police_no/>
<duty_department>孝感市公安局交警支队直属二大队</duty_department>
<duty_department_code/>
<snap_memo/>
<process_date/>
<field_process>0</field_process>
<penalty_type>罚款</penalty_type>
<penalty_type_int>0</penalty_type_int>
<penalty_regulation/>
<offence_regulation/>
<penalty_amount>0</penalty_amount>
<penalty_score>0</penalty_score>
<driver_id/>
<driver_name/>
<driver_addr/>
<alcohol_value>0</alcohol_value>
<evidence_type>0</evidence_type>
<hang1>0</hang1>
<hang2>0</hang2>
<hang3>0</hang3>
</OffenceSnap>


二、WW.java如下

package com.dat;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class WW {
SAXBuilder builder = null;
Document readDocument = null;
Map<String,Object> map=null;
    /*
     *  这个方法的作用是制造一个中间文件bb.dat,因为要读的文件中没有"<?xml version='1.0' encoding='gbk'?>"
     *  这句话,导致jdom无法解析xml文件,所以我必须新建一个过度文件在文件头加入该句话,然后把要读的文件追加到后面,而且
     *  必须一行一行的读一行一行的写,保证格式正确。
     * */
public void tt(String path) {//要读文件的绝对路径
try {

File read = new File(path);//建立文件对象
File write = new File(path+".xml");//建立文件对象

BufferedReader br = new BufferedReader(new FileReader(read));//建立读文件流
BufferedWriter bw = new BufferedWriter(new FileWriter(write));//建立写文件流
String temp = null;
temp = "<?xml version='1.0' encoding='gbk'?>";
bw.append(temp + "\r\n");//写入一行后换行

temp = br.readLine();// 一行一行读入

while (temp != null) {
// 写文件
bw.append(temp + "\r\n"); // 只适用Windows系统
// 继续读文件
temp = br.readLine();
}

bw.close();
br.close();

} catch (FileNotFoundException e) { // 文件未找到
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
    /*
     * 该方法用来读指定的xml格式的文件
     * */
public Map<String,Object> readXml(String path) {
builder = new SAXBuilder();//得到SAXBuilder对象
map=new HashMap();

try {
readDocument = builder.build(path+".xml");// 读值定的dat,xml文件,得到指定的xml对象
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//得到根节点
Element rootElement = readDocument.getRootElement();
//得到根节点下的所有子节点
List list = rootElement.getChildren();
//迭代循环输出指定的节点名字和节点的值
for (Iterator i = list.iterator(); i.hasNext();) {
Element current = (Element) i.next();
String tagName=current.getName();
String tagText=current.getText();
map.put(tagName, tagText);
}
            return map;
}

public static void main(String[] args) {
new WW().tt("F:/20090619084650625.dat");
Map map= new WW().readXml("F:/20090619084650625.dat");

Iterator<String> it=map.keySet().iterator();
  while(it.hasNext()){
  String keyName=it.next();
      System.out.println("["+keyName+"]="+map.get(keyName));
  }
}
}
分享到:
评论

相关推荐

    C#生成.dat文件

    总结来说,C#生成.dat文件主要涉及文件I/O操作,而序列化和反序列化则允许我们将对象持久化到文件中,以便后续读取和恢复。在实际开发中,根据项目需求选择合适的序列化方法和格式,如二进制、XML或JSON,能有效管理...

    android 写入SDcard 文件

    使用`FileOutputStream`或`FileWriter`对象写入文件: ```java File file = new File(myDir, "example.txt"); try { FileOutputStream fos = new FileOutputStream(file); fos.write("Hello, Android!"....

    XMLBean读写操作示例

    在XMLBean中,XML Schema被用来定义数据模型,这些模型可以被编译成Java类,这些类可以直接用来读取和写入XML文件。这个过程分为几个关键步骤: 1. **XML Schema到Java类的编译**:首先,你需要一个XML Schema(XSD...

    excel读取转换txt或dat数据文件过程示例.docx

    本文将详细讲解如何使用Excel来读取和转换TXT或DAT数据文件,这两种文件通常用于存储纯文本数据,适用于各种操作系统。通过以下步骤,我们可以将这些文件有效地转化为可编辑和分析的Excel格式。 1. **启动Excel并...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    unit4 文件读写&GUI1

    例如,`FileReader`和`BufferedReader`用于读取文件,而`FileWriter`和`BufferedWriter`则用于写入文件。读取文件时,我们可以逐行读取,也可以一次性读取整个文件内容。写入文件时,可以追加内容或者覆盖原有内容。...

    LABview串口数据保存至TXT文件_labview_

    常用的方法是使用“文件写入”VI,它可以将LabVIEW的数据类型转换为字符串,并写入到指定的TXT文件中。每次接收到新的串口数据,我们都可以调用这个VI,将数据追加到文件的末尾,从而实现连续记录。 在“串口数据...

    java源码包3

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包2

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...

    java源码包4

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    Excel转dat软件.zip

    4. **创建DAT文件**:将转换后的数据写入DAT文件。这通常需要自定义文件头信息,因为DAT文件没有固定的文件格式。软件可能允许用户指定文件结构,如字段名、数据类型和顺序。 5. **错误处理**:在转换过程中,软件...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...

    OpenCV cv.Mat与.txt文件数据的读写操作

    这两个函数可以实现.txt文件的读写操作,其中WriteData函数将矩阵数据写入到.txt文件中,而LoadData函数将.txt文件中的数据读取到矩阵中。 结论: OpenCV cv.Mat与.txt文件的读写操作是非常重要的,使用cvSave和...

    用户信息管理

    它提供了丰富的API来读取、写入、修改和操作XML文件。DOM4J的优势在于它的灵活性和高效性,使得开发者可以方便地进行XML文档的解析、创建和更新。在用户信息管理中,DOM4J可以用来处理用户的注册信息和消费记录。...

    文件流序列化

    在Delphi中,序列化是通过TStream接口实现的,允许开发者将数据写入或读出各种类型的流,如内存流、文件流等。 标题“文件流序列化”指的是使用Delphi中的文件流进行对象序列化的技术。文件流是TStream接口的一个...

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    - 使用`BinaryFormatter`:这个类可以将对象转换为字节流,并写入到文件。同样,它也可以从文件读取字节流并反序列化为原来的对象。直接保存和读取简单,但不适用于跨平台环境,且不易于人类阅读。 ```csharp ...

    说明文档1

    这可能是将控制台输出或其他数据写入文本文件的过程,通常使用Java的`PrintWriter`或`BufferedWriter`类完成。 3. 输入 `3` 同样需要一个文件名,但这次会生成 HTML 或 XML 文件。HTML(超文本标记语言)是网页的...

    【读写配置文件】C# 快速编写(INI,注册表...)等配置文件

    C#作为.NET框架的一部分,提供了多种方式来处理这些文件,包括读取和写入INI文件、操作注册表以及使用XML或JSON等现代格式。这篇内容将深入探讨C#中与配置文件相关的知识点,特别是涉及INI文件和注册表的操作。 1. ...

    VC序列化-存储文件方法

    "VC序列化-存储文件方法"主要涉及的是如何在Visual C++中利用串行化机制将对象的数据写入文件,并在需要时读取出来恢复对象状态。 1. **什么是序列化**:序列化是将对象的状态转换为字节流的过程,这个字节流可以是...

Global site tag (gtag.js) - Google Analytics