0

我正在尝试使用二进制序列化和从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);
            }
    }

经过一番谷歌搜索后,我发现这可能是与流相关的错误,但我很确定没有其他流打开了我要写入的文件(名称也是随机的!)。

那么,我该如何解决这个问题呢?

4

1 回答 1

0

我找到了你的错误兄弟。实际上,错误的原因不是IsolatedStorageFileStream,而是看似无辜的字符串FileName。

我想你正在生成 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);
        }
}
于 2015-01-05T19:16:25.327 回答