Server部分:
Socket client=...;
ObjectOutputStream objOut = null;
OutputStream out =null;
File f=...;out = client.getOutputStream();
objOut = new ObjectOutputStream(out);
objOut.writeObject(f);-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Client部分:
Object o = (Object) objIn.readObject()
File f = (File)o;
f.getPath();
f.getName();
f.length();//这个丢失了,是0;
f.isDirectory();//这个丢失了,不管是不是目录,都为false;我调试了三天都没弄明白。
请问各位大虾,为什么会这样。

解决方案 »

  1.   

    发送 File 对象干什么? 可以用替代方案吗,其他数据结构保持信息,到了客户端重建。看看 JDK 源码中有没有把这个字段 设为  transient ?
      

  2.   

    文件是依赖操作系统的东西,在 Windows 上是个只是个整数值,这个值代表什么只有创建这个值的那台机器的操作系统才知道。这东西到了其他的机器上,或者只是过了那么一会儿,就再也没有意义了。
      

  3.   

    我传File对象过去是想让两台WINDOWS机器的某个分区的文件同步。
    文件传到客户机后lastModify会改变,这样就不一样了。
    本想传File对象过去,客户端得到的是服务器的lastModify .可惜,没成功。
      

  4.   

    谢谢你们俩,正如你们说的,我自己继承了File类把该使用的保存了。屏蔽transient