论坛首页 入门技术论坛

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

浏览 4553 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-05-21  
做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,大家也试试
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 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics