C#txt文件读写功能实现

在实际开发中,我们经常需要从文本文件中读取或修改某一行的数据。以下是实现这一功能的详细步骤和代码示例。

功能描述

  1. 分行写入:将多行内容逐行写入文件。

  2. 读取某一行数据:从文本文件中读取指定行的内容。

  3. 修改某一行数据:修改文本文件中指定行的内容,并保存文件。

实现代码

cs 复制代码
using System;
using System.Collections.Generic;
using System.IO;

namespace ReadWriteSpecificLine
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = "example.txt";

            // 示例:写入多行内容到文件
            WriteLinesToFile(filePath, new List<string>
            {
                "第一行内容",
                "第二行内容",
                "第三行内容",
                "第四行内容"
            });

            // 示例:读取指定行
            int lineNumber = 2; // 读取第2行(行号从1开始)
            string lineContent = ReadSpecificLine(filePath, lineNumber);
            Console.WriteLine($"第 {lineNumber} 行的内容是:{lineContent}");

            // 示例:修改指定行
            ModifySpecificLine(filePath, lineNumber, "这是修改后的第二行内容");
            Console.WriteLine("修改后的文件内容:");
            Console.WriteLine(File.ReadAllText(filePath));

            // 等待用户按下回车键退出
            Console.WriteLine("按回车键退出...");
            Console.ReadLine();
        }

        /// <summary>
        /// 将多行内容写入文件
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="lines">要写入的多行内容</param>
        static void WriteLinesToFile(string path, List<string> lines)
        {
            try
            {
                File.WriteAllLines(path, lines);
                Console.WriteLine("文件写入成功!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("写入文件时出错: " + ex.Message);
            }
        }

        /// <summary>
        /// 读取文件中指定行的内容
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="lineNumber">行号(从1开始)</param>
        /// <returns>指定行的内容</returns>
        static string ReadSpecificLine(string path, int lineNumber)
        {
            try
            {
                // 读取文件的所有行
                string[] lines = File.ReadAllLines(path);

                // 检查行号是否有效
                if (lineNumber > 0 && lineNumber <= lines.Length)
                {
                    return lines[lineNumber - 1]; // 行号从1开始,数组索引从0开始
                }
                else
                {
                    Console.WriteLine("行号无效,文件总行数为: " + lines.Length);
                    return null;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("读取文件时出错: " + ex.Message);
                return null;
            }
        }

        /// <summary>
        /// 修改文件中指定行的内容
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="lineNumber">行号(从1开始)</param>
        /// <param name="newContent">新的内容</param>
        static void ModifySpecificLine(string path, int lineNumber, string newContent)
        {
            try
            {
                // 读取文件的所有行
                string[] lines = File.ReadAllLines(path);

                // 检查行号是否有效
                if (lineNumber > 0 && lineNumber <= lines.Length)
                {
                    // 修改指定行的内容
                    lines[lineNumber - 1] = newContent;

                    // 将修改后的内容写回文件
                    File.WriteAllLines(path, lines);
                    Console.WriteLine("文件修改成功!");
                }
                else
                {
                    Console.WriteLine("行号无效,文件总行数为: " + lines.Length);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("修改文件时出错: " + ex.Message);
            }
        }
    }
}

运行结果

扩展功能

1、追加内容到某一行

如果需要追加内容而不是替换整行,可以修改指定行的内容为原内容加上新内容:

cs 复制代码
lines[lineNumber - 1] += " " + newContent;

2、插入新行

如果需要在指定位置插入新行,可以使用 List<string> 的 Insert 方法:

cs 复制代码
List<string> linesList = new List<string>(File.ReadAllLines(path));
linesList.Insert(lineNumber - 1, newContent); // 插入新行
File.WriteAllLines(path, linesList);

3、删除某一行

如果需要删除指定行,可以使用 List<string> 的 RemoveAt 方法:

cs 复制代码
List<string> linesList = new List<string>(File.ReadAllLines(path));
linesList.RemoveAt(lineNumber - 1); // 删除指定行
File.WriteAllLines(path, linesList);
相关推荐
huaqianzkh13 小时前
WinForm C#:循环修改控件UI闪烁卡顿?SuspendLayout / ResumeLayout 与 BeginUpdate 优化
开发语言·ui·c#
用户3721574261351 天前
C# 实现 Excel 单元格保护:锁定公式并允许编辑指定区域
c#·ai编程·编程语言
公子小六1 天前
基于.NET的Windows窗体编程之WinForms数据持久化(1)
windows·microsoft·c#·.net·winforms
三雷科技2 天前
第6章第4节:自定义分词器
开发语言·c#
zhanghaha13142 天前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
Coder_Shenshen2 天前
罗克韦尔ACD工程归档离线变量树解析
算法·c#
寂寞的船2 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
1-1=03 天前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
波力海苔夹心脆6754 天前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
AI导出鸭PC端4 天前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭