如何从文本文件中删除不需要的行
本文关键字:删除 不需要 文件 文本 | 更新日期: 2023-09-27 18:34:16
我的项目正在写入两个文本文件。 一个用于输入,一个用于输出。我需要它们在最后写入两个相同的文本文件。
这是我到目前为止的代码:
static void Main( string[] args )
{
string line = null;
string line_to_delete = "--";
string desktopLocation = Environment.GetFolderPath( Environment.SpecialFolder.Desktop );
string text = Path.Combine( desktopLocation, "tim3.txt" );
string file = Path.Combine( desktopLocation, "tim4.txt" );
using (StreamReader reader = new StreamReader( text ))
{
using (StreamWriter writer = new StreamWriter( file ))
{
while (( line = reader.ReadLine() ) != null)
{
if (string.Compare( line, line_to_delete ) == 0)
File.WriteAllText( file, File.ReadAllText( text ).Replace( line_to_delete, "" ) );
continue;
}
}
谢谢
如果要
从输入文件中读取所有行并将它们全部写入输出文件(与给定文本匹配的行除外(:
public static void StripUnwantedLines(
string inputFilePath,
string outputFilePath,
string lineToRemove)
{
using (StreamReader reader = new StreamReader(inputFilePath))
using (StreamWriter writer = new StreamWriter(outputFilePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
bool isUnwanted = String.Equals(line, lineToRemove,
StringComparison.CurrentCultureIgnoreCase);
if (!isUnwanted)
writer.WriteLine(line);
}
}
}
在这种情况下,比较是使用当前区域性进行的(如果您需要搜索"--",这可能并不重要,但可以明确指定(,并且不区分大小写。
如果您希望跳过以给定文本开头的所有行,则可能需要使用 line.StartsWith
更改String.Equals
。
给定此输入文件:
这是文件的开头--一行文本--另一行文本
它将产生以下输出:
这是文件的开头一行文本另一行文本
笔记
在您的示例中,您在 while
循环中使用了以下代码:
File.WriteAllText(file,
File.ReadAllText(text).Replace(line_to_delete, ""));
没有其他任何东西可能就足够了(但它会删除不需要的行,用空的行替换它们(。它的问题(如果保留空行不是问题(是它会读取内存中的整个文件,如果文件真的很大,它可能会(非常(慢。仅供参考,这是您可以重写它以执行相同任务的方式(对于不太大的文件,因为它可以在内存中工作(:
File.WriteAllText(outputFilePath, File.ReadAllText(inputFilePath).
Where(x => !String.Equals(x, lineToDelete));