Silverlight IsolatedStorage:删除不工作,截断留空格

时间:2010-01-07 12:02:22

标签: silverlight isolatedstorage truncate

我在Silverlight应用程序中使用IsloatedStorage来记录客户端上的信息,并添加了一个清除日志文件的函数。但是,我尝试过这两种方法时遇到了问题:

方法一:使用

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 :(得分:0)

我找到了一种方法,不是通过关闭而是通过处置:

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

没有得到'截断'方法,但现在不需要。