c#可以这样写,java中怎么写???//【客户端】
//这是你的object数组
Object[] objArray = new Object[10];
//内存流(需要引用 System.IO)
MemoryStream ms=new MemoryStream();
//序列化(需要引用 System.Runtime.Serialization.Formatters.Binary)
BinaryFormatter bf = new BinaryFormatter();
//将数据保存到内存流
bf.Serialize(ms, objArray);//【服务端】
MemoryStream msGet;//你通过自己的方法获取到内存流
BinaryFormatter bfServer = new BinaryFormatter();
//反序列化,得到数据
Object[] getObjectArray = (Object[])bf.Deserialize(msGet); c#可以这样写,java中怎么写???

解决方案 »

  1.   

    要实现在序列化必须implements Serializable
    总之没有c#中那么方便,c#中5行代码能搞定可能java中需要10行
      

  2.   

    朋友们,有没有例子看下
    我是想把object数组变成字节数组,然后用socket传送字节数组
      

  3.   

    Object[] objArray = new Object[10]; 
    ObjectOutputStream oos = null;
    OutputStream os = null;
    try {
      os = new FileOutputStream("c:\\xxxx"); // 输出流你可以随便定义了
      oos = new ObjectOutputStream(os);
      oos.writeObject(objArray);
    } catch (Exception e) {
      throw e;
    } finally {
      IOUtils.closeQuietly(oos);
      IOUtils.closeQuietly(os);
    }
      

  4.   


    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    import java.util.Arrays;public class Test2 { public static void main(String[] args) throws IOException {
    Serializable obj = "abc";
    byte[] array = toByteArray(obj);
    System.out.println("Array: "+Arrays.toString(array));
    obj = toObject(array);
    System.out.println(obj);
    } /**byte[]转对象*/
    public static Serializable toObject(byte[] bytes) throws IOException {
    ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
    Serializable ser = null;
    try {
    ser = (Serializable) in.readObject();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    return ser;
    } /**对象转byte[]*/
    public static byte[] toByteArray(Serializable object) throws IOException {
    ByteArrayOutputStream buf = new ByteArrayOutputStream();
    ObjectOutputStream o = new ObjectOutputStream(buf);
    o.writeObject(object);
    byte[] bytes = buf.toByteArray();
    return bytes;
    }
    }
    两个方法,顺带一个小例子。
    注:java中要变成byte[]需要实现Serializable接口才行。
      

  5.   

    不好意思,上面问题可能没写明白,现发段C#代码,类似如这样功能,将一个集合转成一个byte[]数组,java中怎么写???        /// <summary>
            /// string集合转成byte[]数组
            /// </summary>
            /// <returns>序列化后的字节数组</returns>
            private byte[] SerializeOnlineList()
            {
                StringCollection onlineList = new StringCollection();
                onlineList.Add("张三");
                onlineList.Add("李四");
                IFormatter format = new BinaryFormatter();
                MemoryStream stream = new MemoryStream();//创建其支持存储区为内存的流
                format.Serialize(stream, onlineList);
                byte[] ret = stream.ToArray();
                stream.Close();
                return ret;
            }
      

  6.   

    没明白,朋友们,帮帮忙!!!
    因为socket传送的时候只能传byte[],所以要把object[]转成byte[],才能发送.
      

  7.   


    C#   -- 需要敲两下键盘
    java -- 需要四下
    遵循引用的逻辑:
    C# 确实比java简单一半.有聊啊!
      

  8.   

    LZ用Java多久了,
    把 ObjectOutputStream再封装成一个 ByteArrayOutputStream就可以了
      

  9.   

    我回复的时候还没看到五楼的贴,序列化弄明白了,现在我java的序列化,通过socket发送给C#,C#反序列化不了,郁闷
      

  10.   

    呵呵,通信的话,考虑JSON或XML吧,就算Java的RMI也很少会把对象序列化后传输,得多浪费性能啊。
      

  11.   

    用XML封装数据吧。数据交换一般都这么做。
      

  12.   

    MemoryStream 是什么接口?这就等于要求服务器端和客户端使用同样的语言了。如今的网络应用都讲究使用独立协议,不要绑定在语言或系统上。