关于对象流 ObjectInputStream 的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 18:08:18
请教啊 怎样用对象流 ObjectInputStream 直接读出第N个数据啊?在我理解 ObjectInputStream ;就是一个一个的往下读~~~那我想读取上一个数据怎么办啊?读到第8个我想再去读第2个怎么办啊

读流的时候一般是一根流指针(不是c里的指针)标记你读到的地方..我记得io里面有个mark方法可以标记你读到哪个,比如首先你要调用一个好现象是marksupported方法来查看流至不支持标记,如果支持,你读到第二个mark一下,然后读好第八个调用reset()ms就能回去了..我不使最清楚哦,老师以前介绍过,你试验下吧..
最好的方法还是把第二个对象先保存在边上嘛..

补充:我查过 java API了,对象输入流不支持标记,但是BufferedInputStream支持。。所以估计这里就不能倒回去读了.

给你个例子,我成功了

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MarkSupported {

public static void main(String[] args) throws FileNotFoundException,
IOException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(
"a.txt"));
System.out.println(in.markSupported());
int curr = ' ';
int count = 0;
in.mark(5);
while ((curr = in.read()) != -1) {
if (count == 5)
in.reset();
System.out.print((char) curr);
count++;
}
in.close();