求助:基于XML实现文本冒险游戏角色数据存读及IO异常解决
DND文本冒险游戏MVP:角色数据存读问题与解决方案
项目背景
我正在为许久未玩桌面游戏的DND玩家开发一款文本冒险游戏的MVP,目前所有核心系统均已正常运行,但角色数据的存读功能尚未实现。最初尝试了二进制序列化,之后改为使用XML序列化,但对XML的存读实现完全不了解(附Player类结构截图)。
遇到的文件访问异常
后续尝试用StreamWriter和StreamReader实现存读时,突然出现以下异常:
IOException: The process cannot access the file 'D:\test\Game1.txt' because it is being used by another process.
此前功能运行正常,无任何改动的情况下突然无法访问目标文件。
最终解决方案
经过排查,找到两个关键解决点:
- 避免创建静态的
StreamWriter/StreamReader实例指向同一文件,这类静态实例会长期占用文件句柄,导致存读操作互相阻塞。正确的做法是在每个存读方法内部临时创建实例,使用完毕后自动释放资源。 - 使用
StreamWriter.WriteLine()和StreamReader.ReadLine()按行处理数据,文件路径支持两种形式:完整绝对路径(如D:\test\Game1.txt)或相对默认路径(如game1.xml)。
内容的提问来源于stack exchange,提问作者Dredin 47
相关产品推荐
相关产品推荐

