Silverlight IsolatedStorage: удаление не работает, усечение, оставляя пустое пространство - PullRequest
0 голосов
/ 07 января 2010

Я использую IsloatedStorage в приложении Silverlight для регистрации информации на клиенте, и я добавил функцию для очистки файла журнала.Однако у меня были проблемы с двумя подходами, которые я попробовал:

Подход первый: использовать

IsolatedStorageFile.DeleteFile("log.log");

Результат: эта ошибка завершается и выдает ошибку «[IsolatedStorage_DeleteFile]» (другой информации нет),Функция отлично работает с тестовыми файлами, например, DeleteFile("test.txt"), но отказывается удалять журнал.Я подумал, что, возможно, журнал используется, и попытался закрыть его с помощью

IsolatedStorageFileStream.close()

Но это возвращает другую ошибку "[IsolatedStorage_StoreNotOpen]".Я знаю, что он открыт, так как предыдущая строка кода успешно регистрирует сообщение.

Второй подход: снова открыть файл журнала в режиме усеченного файла,

_storageFileStream = new IsolatedStorageFileStream(logfilename, FileMode.Truncate, FileAccess.Write, FileShare.ReadWrite, _storageFile);

Согласно MSDN, Truncate "Указывает, что операционная система должна открыть существующий файл. После открытия файл должен быть обрезан, чтобы его размер равнялся нулю." Однако он открывает мой файл журнала и заполняет его пробелом!Размер файла остается идентичным, следующее сообщение журнала добавляется в конец всего пространства.

1 Ответ

0 голосов
/ 07 января 2010

Я нашел способ сделать это, не закрывая, а используя:

IsolatedStreamWriter.Dispose();                       
IsolatedStorageFile.DeleteFile("log.log");
IsolatedStorageFileStream = new IsolatedStorageFileStream(logfilename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite, _storageFile);

Не получил «усеченный» подход к работе, но сейчас не нужно.

...