检查流是否为空

时间:2011-05-30 19:05:53

标签: c# .net stream deserialization

我正在尝试反序列化XML文件。在绑定反序列化之前,我需要检查XML文件流是否为空。

IsolatedStorageFileStream isfs1 = new IsolatedStorageFileStream("test.xml", 
    FileMode.Open, FileAccess.Read, isf);

// Deserialize the XML to an object
Settings s = new Settings();
SoapFormatter SF= new SoapFormatter();
s = (Settings) SF.Deserialize(isfs1); 

如何检查isfs1是否为空?

5 个答案:

答案 0 :(得分:27)

检查流的Length属性。

  

Length表示文件中当前的字节数。

如果为0,则文件为空。

答案 1 :(得分:4)

如果您的文件是UTF-8格式,由于BOM(字节顺序标记),它的大小至少为3。所以检查长度>即使您的文件为空,0也将返回true。

答案 2 :(得分:1)

如果isfs1.Length = 0表示流为空

答案 3 :(得分:0)

IsolatedStorageFileStream.Length会有效吗?

if (isfs1.Length > 0) {
  // isfs1 isn't empty.
}

答案 4 :(得分:0)

如果你构造空的 zip 存档内存流,它有 22 个字节处于空状态。

MemoryStream memoryStream = new MemoryStream();
using (ZipArchive zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
    // no content added
}
memoryStream.Length // have value of 22