Проверка, если поток пуст - PullRequest
18 голосов
/ 30 мая 2011

Я пытаюсь десериализовать 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 или нет?

Ответы [ 4 ]

27 голосов
/ 30 мая 2011

Проверьте свойство Length потока.

Длина представляет количество байтов, находящихся в данный момент в файле.

Если оно0, файл пуст.

4 голосов
/ 24 июля 2014

Если ваш файл в формате UTF-8, его размер составляет не менее 3 из-за BOM (Byte Order Mark). Поэтому проверка длины> 0 вернет true, даже если ваш файл пуст.

1 голос
/ 30 мая 2011

если isfs1.Length = 0 означает, что поток пуст

0 голосов
/ 30 мая 2011

Будет ли IsolatedStorageFileStream.Length работать?

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