我正在尝试使用二进制序列化和从WPPerfLab获取的一些帮助程序序列化一个对象,我在这一行中得到了错误:
using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(FileName, FileMode.Create, myIsolatedStorage))
这是我正在做的事情的简短片段。
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(FileName))
{
myIsolatedStorage.DeleteFile(FileName);
}
using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(FileName, FileMode.Create, myIsolatedStorage))
{
new BinarySerializationHelper().Serialize(fileStream, object);
}
}
经过一些谷歌搜索后,我发现这可能是一个与流相关的错误,但我很确定没有其他流可以打开我正在尝试写入的文件(名称也是随机的!)。
那么,我该如何解决这个问题?
答案 0 :(得分:0)
我找到了你的错误兄弟。实际上,错误的原因不是IsolatedStorageFileStream,而是无辜的字符串FileName。
我想你正在生成FIleName为
string FileName =" some_random_string" + DateTime.Now.ToString(" hh:mm");
或您正在使用的日期时间格式。在这一行上设一个断点。您会发现FileName值包含一个字符':' ....非常非常糟糕的命名。因此错误。尝试以其他方式命名文件。
但是这个IsolatedStorageFileStream构造函数让我很烦恼。所以我用另一种方式。我正在使用IsolateStorage流的方法来打开文件。看一下代码
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(FileName))
{
myIsolatedStorage.DeleteFile(FileName);
}
using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(FileName, System.IO.FileMode.CreateNew))
{
new BinarySerializationHelper().Serialize(fileStream, object);
}
}