C#读写TXT文件及XML数据的实用代码实现
在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的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









