在我的单元测试中,我使用以下代码打开一个流并写入它:
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
stream = m_store.OpenFile(filename, FileMode.Create);
...
stream.Flush();
stream.Close();
stream.Dispose();
store.Dispose()
第一次成功,但第二次失败时出现以下日志输出: 附加信息:IsolatedStorageFileStream上不允许操作。
FileMode.Create枚举常量定义为:
指定操作系统应创建新文件。如果该文件已存在,则将被覆盖。 Create等同于请求如果文件不存在,则使用CreateNew;否则,请使用截断。
所以看起来这是正确的常数。
我在stackoverflow上发现了一些类似的问题 IsolatedStorageFileStream exception is throw when file is opened?
但他们没有帮助。正如在网上某处建议的那样(现在找不到链接),我尝试先删除该文件(如果它存在),与枚举注释相反,如下所示,但也没有帮助:
if (store.FileExists(filename))
{
store.DeleteFile(filename);
}
问题:我缺少什么?
谢谢!
答案 0 :(得分:1)
首先,您应该真正使用using
语句,而不是显式调用Close
或Dispose
- 否则,如果有异常,您赢了't 关闭了流。
其次,我怀疑问题是你没有处理商店本身。试试这个:
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = store.OpenFile(filename, FileMode.Create))
{
...
}
答案 1 :(得分:0)
您将对Iso存储的引用放在本地变量存储中,但稍后您使用成员(?)变量 m_store 来创建流。
这只是这个问题的一个错字,还是你正在执行的实际代码?