论坛首页 入门讨论版

一个比较偏的问题,java序列化

浏览 2489 次
该帖已经被评为新手帖
作者 正文
时间:2007-05-21 关键字: java
做rome 解析RSS的时候发现一个奇怪的现象,先看代码
		PipedInputStream pipin = new PipedInputStream();
		PipedOutputStream pipout = new PipedOutputStream(pipin);
		ObjectOutputStream out = new ObjectOutputStream(pipout);
		SyndEntry entry = new SyndEntryImpl();
		System.out.println(ss);
 		out.writeObject(entry);
		out.close();

我原想把SyndEntryImpl的实例进行对象序列化存到文件中,但是程序运行到out.writeObject(entry);这一句的时候就停住了,没有任何错误,cpu也正常,SyndEntryImpl这个类已经声名实现了Serializable。这难道是java的bug?
   
时间:2007-05-21
大家都来看看 我觉得这个问题比较偏,大家讨论下呀
   
0 请登录后投票
时间:2007-05-21
序列户serialID有没有generated?
   
0 请登录后投票
时间:2007-05-21
假如像你说的一样,运行到这一步就停住了,没有任何错误,那说明,程序正在等待,你用了pipe,我认为是你的io操作写的有问题,你可以试试先写到文件里

FileOutputStream fileOut = ...;
ObjectOutputStream out = new ObjectOutputStream(fileOut);
   
0 请登录后投票
时间:2007-05-21
楼上说的这个该怎么generated?那个类是Rome自带的实现类,也跟平时我们写Serializable的类一样并没有指定serialID,但是自己写的类都是能够writerObject的呀,怪就怪在这里了
   
0 请登录后投票
时间:2007-05-21
不是pipe的问题,因为其它的对象是可以的,我上传个rome,大家也试试
  • rome.rar (325 KB)
  • 描述:
  • 下载次数: 9
   
0 请登录后投票
时间:2007-05-23
javaeyes 写道
做rome 解析RSS的时候发现一个奇怪的现象,先看代码
		PipedInputStream pipin = new PipedInputStream();
		PipedOutputStream pipout = new PipedOutputStream(pipin);
		ObjectOutputStream out = new ObjectOutputStream(pipout);
		SyndEntry entry = new SyndEntryImpl();
		System.out.println(ss);
 		out.writeObject(entry);
		out.close();

我原想把SyndEntryImpl的实例进行对象序列化存到文件中,但是程序运行到out.writeObject(entry);这一句的时候就停住了,没有任何错误,cpu也正常,SyndEntryImpl这个类已经声名实现了Serializable。这难道是java的bug?

你这段代码有问题:pipin这个stream需要运行在另外一个线程,来读取写入管道的数据, 下面这段可以运行的。

final PipedInputStream pipin = new PipedInputStream();
final PipedOutputStream pipout = new PipedOutputStream(pipin);
new Thread(new Runnable() {
public void run() {
int c = -1;
try {
while ((c = pipin.read()) >= 0) {
System.out.print(c);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();

ObjectOutputStream out = new ObjectOutputStream(pipout);
SyndEntry entry = new SyndEntryImpl();
System.out.println("ss");
out.writeObject(entry);
out.flush();
out.close();
   
0 请登录后投票
论坛首页 入门讨论版

跳转论坛: