首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BinaryFormatter: SerializationException

BinaryFormatter: SerializationException
EN

Stack Overflow用户
提问于 2013-07-20 02:29:58
回答 1查看 1.2K关注 0票数 0

我正在使用BinaryFormatter加载和保存我的treeView。如果目标文件不存在,我想防止出现错误。我的代码:

代码语言:javascript
复制
        public static void Load(TreeView tree, string filename)
    {
        if (!File.Exists(filename))
        {
            Stream file = File.Create(filename);
            return;
        }
        else
        {

            using (Stream file = File.Open(filename, FileMode.Open))
            {
                BinaryFormatter bf = new BinaryFormatter();
                object obj = bf.Deserialize(file);

                TreeNode[] nodeList = (obj as IEnumerable<TreeNode>).ToArray();
                tree.Nodes.AddRange(nodeList);
            }
        }
    }

如果我要手动删除文件,它应该会创建一个新文件,名为与前一个文件相同。问题是当它到达object obj = bf.Deserialize(file);时,错误显示为Attempting to deserialize an empty stream.。我的猜测是新文件缺少一些二进制结构或其他东西,但我仍然不确定如何解决它。如果我尝试将节点添加到treeView中,并在稍后保存它,我会收到错误消息,该文件正被其他程序使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-20 02:32:50

代码语言:javascript
复制
public static void Load(TreeView tree, string filename)
{
    using (var file = File.Open(filename, FileMode.OpenOrCreate))
    {
        if (file.Length.Equals(0))
            return;

        var bf = new BinaryFormatter();
        var obj = bf.Deserialize(file);
        var nodeList = (obj as IEnumerable<TreeNode>).ToArray();
        tree.Nodes.AddRange(nodeList);
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17753118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档