我在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 “指定操作系统应该打开现有文件。一旦打开,应该截断该文件,使其大小为零字节。”但是,它会打开我的日志文件并用空格填充!文件大小保持相同,下一条日志消息将附加到所有空格的末尾。
答案 0 :(得分:0)
我找到了一种方法,不是通过关闭而是通过处置:
IsolatedStreamWriter.Dispose();
IsolatedStorageFile.DeleteFile("log.log");
IsolatedStorageFileStream = new IsolatedStorageFileStream(logfilename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite, _storageFile);
没有得到'截断'方法,但现在不需要。