当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级考试JAVA知识点整理(26)
发布时间:2010/12/12 18:27:03 来源:城市学习网 编辑:ziteng
  1.1.3.2.9 串行化
  串行化 以标准格式将任意的Java数据结构转换为字节流。例如,下面的程序输出随机整数数组:
  import java.io.*;
  import java.util.*;
  public class serial1 {
  public static void main(String args[]) {
  ArrayList al = new ArrayList();
  Random rn = new Random();
  final int N = 100000;
  for (int i = 1; i <= N; i++)
  al.add(new Integer(rn.nextInt()));
  try {
  FileOutputStream fos = new FileOutputStream("test.ser");
  BufferedOutputStream bos = new BufferedOutputStream(fos);
  ObjectOutputStream oos = new ObjectOutputStream(bos);
  oos.writeObject(al);
  oos.close();
  } catch (Throwable e) {
  System.err.println(e);
  }
  }
  }
  而下面的程序读回数组:
  import java.io.*;
  import java.util.*;
  public class serial2 {
  public static void main(String args[]) {
  ArrayList al = null;
  try {
  FileInputStream fis = new FileInputStream("test.ser");
  BufferedInputStream bis = new BufferedInputStream(fis);
  ObjectInputStream ois = new ObjectInputStream(bis);
  al = (ArrayList) ois.readObject();
  ois.close();
  } catch (Throwable e) {
  System.err.println(e);
  }
  }
  } [NextPage]   注意我们使用缓冲提高I/O操作的速度。
  有比串行化更快的输出大量数据然后读回的方法吗?可能没有,除非在特殊的情况下。例如,假设你决定将文本输出为64位的整数而不是一组8字节。作为文本的长整数的最大长度是大约20个字符,或者说二进制表示的2.5倍长。这种格式看起来不会快。然而,在某些情况下,例如位图,一个特殊的格式可能是一个改进。然而使用你自己的方案而不是串行化的标准方案将使你卷入一些权衡。
  除了串行化实际的I/O和格式化开销外(使用DataInputStream和 DataOutputStream), 还有其他的开销,例如在串行化恢复时的创建新对象的需要。
  注意DataOutputStream 方法也可以用于开发半自定义数据格式,例如:
  import java.io.*;
  import java.util.*;
  public class binary1 {
  public static void main(String args[]) {
  try {
  FileOutputStream fos = new FileOutputStream("outdata");
  BufferedOutputStream bos = new BufferedOutputStream(fos);
  DataOutputStream dos = new DataOutputStream(bos);
  Random rn = new Random();
  final int N = 10;
  dos.writeInt(N);
  for (int i = 1; i <= N; i++) {
  int r = rn.nextInt();
  System.out.println(r);
  dos.writeInt(r);
  }
  dos.close();
  } catch (IOException e) {
  System.err.println(e);
  }
  }
  }
  和:
  import java.io.*;
  public class binary2 {
  public static void main(String args[]) {
  try {
  FileInputStream fis = new FileInputStream("outdata");
  BufferedInputStream bis = new BufferedInputStream(fis);
  DataInputStream dis = new DataInputStream(bis);
  int N = dis.readInt();
  for (int i = 1; i <= N; i++) {
  int r = dis.readInt();
  System.out.println(r);
  }
  dis.close();
  } catch (IOException e) {
  System.err.println(e);
  }
  }
  }
  这些程序将10个整数写入文件然后读回它们。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved