在实际开发中,我们经常需要从文本文件中读取或修改某一行的数据。以下是实现这一功能的详细步骤和代码示例。
功能描述
-
分行写入:将多行内容逐行写入文件。
-
读取某一行数据:从文本文件中读取指定行的内容。
-
修改某一行数据:修改文本文件中指定行的内容,并保存文件。
实现代码
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);