File f=new File("my.dat");//my.dat是你输出的文件名
FileOutputStream file = new FileOutputStream("c:\userInfo.ser",f);
没有文件名,你只有输出的路径自然是不行的

解决方案 »

  1.   

    FileOutputStream file = new FileOutputStream("c:\\userInfo.ser");
      

  2.   

    is there any inputstream or reader that has opened this file and you haven't closed or you have already opened an outputstream or writer.
      

  3.   

    怎么不看编译错误信息?
    很明显
    c:\userInfo.ser
    要改成
    c:\\userInfo.ser

    c:/userInfo.ser
      

  4.   

    楼上说的对,还有一个那个user对象是否实现了序列化?
      

  5.   

    初学这个,还请各位不吝赐教!
    我看了编译错误信息,按楼上说的改过,可是当时还是出现那个问题,选择倒是没有出现那个错误信息,但是还是有问题,提示错误信息在 out.close();
    "Frame1.java": Error #: 300 : variable out not found in class serialize.Frame1 at line 88, column 8
    好像删了finally就行,但是我想那不是解决问题的好办法,给我讲讲好吗?谢了!
      

  6.   

    因为你的out是在try里面声明的,将out的声明放到try之前就ok了。
      

  7.   

    也就是说out的作用域只在try里面,在catch、finally中都不能使用,作用域可以从"{"和配对的"}"看出。
      

  8.   

    首先同意楼上再说局部变量out会自动被处理的,也没必要finally{out.close();}
      

  9.   

    c:\userInfo.ser改成c:\\userInfo.ser或者c:/userInfo.ser就行了。
      

  10.   

    TO hehecafe,单单将out放到try外面好像是不行的,不幸可以调试下看看,^_^
    To Hodex,没必要用out.close()?那什么时候是需要用它的呢?
      

  11.   

    ”c:\userInfo.ser“这是Windows中的路径表示方法,因为java跨平台,这样当然不行。
    应该象Linux中一样用”/“,所以:” c:/userInfo.ser“或者”c:\\userInfo.ser“:)
      

  12.   

    在java中,最好不要用"\\"或"/"来做路径分割符,用System.getProperty("file.separator");这样在任何系统下都不会出现这种问题