日期:2014-05-18  浏览次数:20961 次

C#序列化之后的对象为byte[]类型数组但是无法转换成string类型?
FileStream fs = new FileStream("I:\\xi.txt", FileMode.OpenOrCreate);
  int bodySize = 64 * 1024;
  byte[] data = new byte[bodySize];
  fs.Read(data, 0, bodySize);
  fs.Close();
  string str = string.Empty;
  str = Encoding.UTF8.GetString(data, 0, data.Length);


  MessageBox.Show(str);


其中xi.txt 文件中的内容是对象序列化成byte[]数组在文件流的形式写入到里面的。
但是想把byte[]转换成string 一直为空?

请问怎么回事?

------解决方案--------------------
楼主,要一行一行的读:
StreamReader objReader = new StreamReader("c:\\test.txt");
string sLine="";
ArrayList arrText = new ArrayList();

while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null)
arrText.Add(sLine);
}
objReader.Close();
------解决方案--------------------
str = Encoding.UTF8.GetString(data, 0, data.Length);
你读出来的byte数组肯定不是UTF8编码的,而是默认编码
str = Encoding.Default.GetString(data, 0, data.Length);
这样就对了