快速业务通道

Java编程那些事儿90——装饰流使用1 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
中,需要将MyData类型的对象内部保存的数据按照一定的格式存储到文件中,这里列举了2种基本数据类型boolean和int,以及两种引用数据类型String和数组,在下面的示例代码中将会以一定的格式写入到文件中。

import java.io.*; /** * 使用DataOutputStream书写具有一定格式的文件 */ public class WriteFileUseDataStream {  public static void main(String[] args) {   short sh[] = {1,3,134,12};   MyData data =new MyData(true,100,"Java语言",sh);   //写入文件   writeFile(data);  }  /**  * 将MyData对象按照一定格式写入文件中  * @param data 数据对象  */  public static void writeFile(MyData data){   FileOutputStream fos = null;   DataOutputStream dos = null;   try{    //建立文件流    fos = new FileOutputStream("test.my");    //建立数据输出流,流的嵌套    dos = new DataOutputStream(fos);    //依次写入数据    dos.writeBoolean(data.b);    dos.writeInt(data.n);    dos.writeUTF(data.s);    //写入数组    int len = data.sh.length;    dos.writeInt(len); //数组长度    //依次写入每个数组元素    for(int i = 0;i < len;i++){     dos.writeShort(data.sh[i]);    }   }catch(Exception e){    e.printStackTrace();   }finally{    try {     dos.close();     fos.close();    } catch (Exception e2){     e2.printStackTrace();    }   }  } }

Java编程那些事儿90——装饰流使用1(3)

时间:2010-03-15 csdn 陈跃峰

在该示例代码中,首先建立一个实体流fos,该实体流连接到数据源——文件,然后以该实体流对象为基础,使用流的嵌套,建立装饰流对象dos,由于需要写入流中的对象data中包含的数据比较多,所以需要以一定的格式写入流,这里使用DataOutputStream避免自定义数据格式,而写入流中的顺序就是该流的格式,也就是文件test.my的格式,这种格式对于程序员来说是透明的。

使用对象dos中对应的writeXXX方法依次将需要存储的数据写入流中,在写入字符串时,为了使字符编码保持一致,一般使用writeUTF写入字符串,也就是先将字符串转换为utf-8格式的byte数组,然后再将该数组以一定的格式写入到流中。而在写入数组时,则首先写入数组的长度,然后再将数组的内容依次写入到流中,使用这种方式就可以很方便的将数组写入到流中。

这样文件test.my文件就具有了自己特定的文件格式,程序员需要记忆的就是该文件在写入时的写入顺序,可以很方便的使用DataInputStream读取出来。

下面的代码是使用DataInputStream读取test.my文件的代码,注意文件格式的处理。

import java.io.*; /** * 使用DataInputStream读取自定义格式的文件 */ public class ReadFileUseDataStream {  public static void main(String[] args) {   MyData data = readFile();   System.out.println(data.b);   System.out.println(data.n);   System.out.println(data.s);   int len = data.sh.length;   for(int i = 0;i < len;i++){    System.out.println(data.sh[i]);   }  }  /**  * 从文件test.my中读取数据,并使用读取到的数据初始化data对象  * @return 读取到的对象内容  */  public static MyData readFile(){   MyData data = new MyData();   FileInputStream fis = null;   DataInputStream dis = null;    try {      //建立文

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号