2011-08-12 5 views
0

으로 I는 직렬화 할 다음 코드가/역 직렬화 DataTable을 :직렬화 복원 바이트 [] 위로 DataTable을

public static byte[] Serialize(DataTable dt) 
    { 
     System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
     System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); 
     formatter.Serialize(stream, dt); 
     return stream.GetBuffer(); 
    } 


    public static DataTable Deserialize(byte[] buffer) 
    { 
     System.IO.MemoryStream stream = new System.IO.MemoryStream(buffer); 
     System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter(); 

     return formatter.Deserialize(stream) as DataTable; 
    } 

직렬화 방법은 잘 작동되지만 직렬화 방법이 오류 발생 :

The input stream is not a valid binary format. The starting contents (in bytes) are: 1F-8B-08 ... 

나는이 방법이 과거에 잘 작동하는지 99 % 확실하다. 확실하지 않다. Getbuffer()가 초기화되지 않은 바이트를 반환 할 수있는 동안

+5


http://msdn.microsoft.com/en-us/library/system.io.memorystream.toarray.aspx
보기 ... 후자의 반환 이후 GetBuffer()하지만 ToArray() 정말 컨텐츠를 사용해서는 안 'Serialize'를'Deserialize'로 출력합니까? 'Deserialize (Serialize (object))'를 실행하고 에러가 있는지보십시오. – Dani

답변

관련 문제