FileStream fo = new FileStream(filename, FileMode.Open, FileAccess.Read);
MemoryStream ms = new MemoryStream((int)(fo.Length));
byte[] buffer = new byte[8096];
int readed = fo.Read(buffer, 0, 8096);
while (readed != 0)
{
ms.Write(buffer, 0, readed);
readed = fo.Read(buffer, 0, 8096);
}
ms.Seek(0, SeekOrigin.Begin); //非常重要的一句话!没有的话,引发异常,缺少根元素
//
import.ReadXml(ms, XmlReadMode.ReadSchema);
fo.Close();
ms.Close();
假若先有大的 byte[] buffer,
MemoryStream ms = new MemoryStream(buffer);
则ms.Seek可以省略,ms流操作位置指针在首位置。
关键点是流操作位置指针位置!!