C#读写TXT文件及XML数据的实用代码实现

苏见山
苏见山
发布时间:2026-10-15 | 2人浏览过
原创

在C#开发中经常需要进行本地数据存储,最基础的形式便是纯文本(TXT)和结构化配置(XML)。本文将直接给出TXT文件的全覆盖写、追加写及读取的标准代码;随后以LINQ to XML为例,展示如何利用 XDocument 轻松加载、修改并保存 XML 文件。

一、C# 中 TXT 文件的读写

TXT 文件处理主要依赖 System.IO.File 命名空间下的流对象。根据实际业务需求,可以分为两种场景:一是覆盖式写入(先清空再写),二是按行追加写入。

第1步:TXT 文件的清空与写入

目的:确保文件是全新的,或者执行“覆写”操作时防止旧数据残留。

代码示例:利用 FileStream 设置长度为 0 来清空文件,随后使用 StreamWriter 将新内容写入。
注意:原草稿中的 `Wriete` 函数拼写有误且参数名不够直观,以下采用标准的 C# 规范重构了函数逻辑。

/// <summary>
/// 向txt文件中写入字符串
/// </summary>
/// <param name="value">要写入的内容</param>
/// <param name="isClearOldText">是否清除旧的文本,默认true(覆盖)</param>
private void WriteToTxt(string value, bool isClearOldText = true)
{
    string path = "需要操作的txt文件路径"; // 请替换为真实路径
    
    // 如果设置了覆盖模式,则先清空文件
    if (isClearOldText)
    {
        using (FileStream stream = File.Open(path, FileMode.OpenOrCreate, FileAccess.Write))
        {
            stream.Seek(0, SeekOrigin.Begin);
            stream.SetLength(0); // 核心指令:截断文件为空
        }
    }
    
    // 无论是否清空,都进行内容的写入(第二个参数 true 表示追加模式)
    using (StreamWriter writer = new StreamWriter(path, true))
    {
        writer.WriteLine(value);
    }
}

第2步:TXT 文件的读取

目的:将磁盘上的文本文件逐行读入内存字符串变量中。

实现方式:推荐使用 StreamReader。由于文件操作极易抛出异常(如路径不存在、权限不足),必须包裹在 `try-catch` 块中。

/// <summary>
/// 读取txt文件,并返回拼接后的全部内容
/// </summary>
private string ReadTxtContent()
{
    try
    {
        string fullPath = "需要读取的txt文件路径"; // 请替换为真实路径
        string content = string.Empty;
        
        // using 语句能自动释放资源,无需手动调用Close()或Dispose()
        using (StreamReader sr = new StreamReader(fullPath))
        {
            string line;
            // 循环读取直到文件末尾(ReadLine()在无内容时返回 null)
            while ((line = sr.ReadLine()) != null)
            {
                content += line; // 建议大型文件改用StringBuilder提升性能
            }
        }
        return content;
    }
    catch (Exception e)
    {
        Console.WriteLine("读取失败: " + e.Message);
        return null;
    }
}

二、C# 中 XML 文件的解析与生成

XML(可扩展标记语言)常用于配置文件传输。在现代 .NET 开发中,微软官方推荐直接使用 System.Xml.Linq 下的 **XDocument** 系列类,其 API 相比传统的 `XmlDocument` 更轻量、更符合 LINQ 直觉。

第3步:了解标准 XML 格式

一个合法的 XML 通常包含声明头,例如:

<?xml version="1.0" encoding="UTF-8" ?>

在后续的代码中,我们将自动生成符合此规范的格式。

第4步:如何读取现有 XML

操作入口:假设存在一个名为 `E:\test.xml` 的文件。

动作:使用 XDocument.Load() 载入内存,通过链式的 Root、Element() 等方法获取特定标签。

// 1. 加载XML文件到内存
XDocument document = XDocument.Load(@"E:	est.xml");
// 2. 获取根元素及其子元素
XElement root = document.Root;
XElement firstApp = root.Element("app"); // 获取第一个名为app的元素

// 3. 获取特定节点的子节点值
XElement nameNode = firstApp.Element("name");
if(nameNode != null) 
    Console.WriteLine(nameNode.Value); // 打印标签内的文本值

// 4. 遍历根节点下所有直接子元素
foreach (XElement item in root.Elements())
{
    // 打印该元素的 id 属性值
    string idValue = item.Attribute("id")?.Value;
    Console.WriteLine($"ID: {idValue}");
}

第5步:如何动态创建并写入 XML

风险提醒:写入文件会覆盖同名的原有文件,操作前请注意备份重要配置。

动作:通过构造函数创建内存树节点,最后调用 .Save() 持久化。

// 1. 创建内存中的 XML 结构
// 初始化文档,会自动生成  头
XDocument document = new XDocument(); 
XElement root = new XElement("xcsharp"); // 根节点
XElement app = new XElement("app",     // 子节点
    new XElement("name", "测试课程"),   // 孙节点
    new XElement("age", "12")          // 孙节点
);

root.Add(app); // 将 app 添加到 root 下
document.Add(root); // 将 root 挂载到 document 上

// 2. 保存至磁盘(将覆盖原文件)
document.Save(@"E:	est_new.xml");

总结

以上就是C#读写TXT文件及XML数据的详细内容。TXT适合简单日志存储,推荐严格使用 `using` 块配合 `Stream` 避免锁死;而处理配置等结构化数据时,XDocument 提供了极佳的编程体验。更多关于C#文件IO的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表