2011-05-22 93 views
0

如何將二進制文件反序列化爲string? 這是迄今爲止我的示例代碼:將二進制文件反序列化爲字符串

public function serialize() 
{ 
    FileStream fs = new FileStream("test.txt", FileMode.Append); 
    BinaryFormatter formatter = new BinaryFormatter(); 
    formatter.Serialize(fs, textBox1.Text); 
    fs.Flush(); 
    fs.Close(); 
} 

public function deserialize() 
{ 
    FileStream fs = File.Open(openFileDialog1.FileName, FileMode.Open); 

    BinaryFormatter formatter = new BinaryFormatter(); 
    richTextBox1.Text = formatter.Deserialize(mystream) as string; 
    fs.Flush(); 
    fs.Close(); 
} 

當我開始調試應用程序,那隻能說明該流的第一個字符串。剩下的流沒有出現。我應該如何解決這個問題?

+1

有**沒有**理由這樣做。 – SLaks 2011-05-22 22:37:37

+1

ALL-CAPS標題非常煩人。 – SLaks 2011-05-22 22:39:37

+1

@Slaks nice link mate :) – afarazit 2011-05-22 22:41:37

回答

2

正確的方式做,這是把所有要序列化到一個序列化的結構,然後序列化結構的價值觀。另一方面,您將該結構反序列化,然後將值放在需要去的地方。

請注意,二進制串行器會產生二進制文件,而不是文本輸出。如果你想要可讀的序列化數據,你可以使用XmlSerializer。

+0

調用XML輸出_human readable_read似乎是一種延伸。那麼開發人員可讀的 – sarnold 2011-05-22 23:44:44

+0

;) – Yaur 2011-05-23 02:39:49

0

二進制序列化序列化對象圖;它不只是寫字符串。
組合對象圖沒有任何意義。

您應該直接使用File類讀取和寫入文件。

5

只需使用

System.IO.File.WriteAllText(fileName, textBox1.Text); 

textBox1.Text = System.IO.File.ReadAllText(fileName);