首页 新闻 会员 周边 捐助

文件被重新写入后,原文件更长的部分仍留在文件中,如何避免这个状况?(C#)

0
悬赏园豆:10 [已解决问题] 解决于 2020-06-18 16:14

我使用C#编写模块以保存软件的设置,但我发现如果原有设置文件更长,覆盖写入后的新设置文件的末尾总会带有之前的设置信息的尾部。
我可以想到使用一些策略可以避免这个尾部带来的影响,但如何避免文件写入时更长的原文件带来影响?
附代码

public void SaveToFile(string pathName)
        {
            try
            {
                using (var sw =new StreamWriter(
                    File.Open(
                        pathName,
                        FileMode.OpenOrCreate
                )))
                {
                    sw.Write(this.ToString());
                    XXXSystem.Log(this.ToString());//debug
                }
            }
            catch (Exception ex)
            {
                XXXSystem.Log("储存设置文件时遇到错误:" + ex.ToString());
            }

        }
C# IO
eehow的主页 eehow | 初学一级 | 园豆:197
提问于:2020-06-18 15:12
< >
分享
最佳答案
-1

找到解决方案了
https://blog.csdn.net/bruce135lee/article/details/79151215?utm_medium=distribute.pc_relevant_download.none-task-blog-BlogCommendFromBaidu-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-BlogCommendFromBaidu-2.nonecas
使用原始流对象的SetLength方法可设置文件大小,SetLength(0)即可清空文件

    sw.BaseStream.SetLength(0);
    sw.Write(this.ToString());
    XXXSystem.Log(this.ToString());//debug

即可实现写全新的文件。

eehow | 初学一级 |园豆:197 | 2020-06-18 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册