好的,所以我有一个文本文件,其中包含示例内容
line1with some random stuff here
line 2 with something very completely different
line3 has some other neat stuff
line4 is the last line in the textfile
我需要获取该文本文件,删除一行,并保留文件的REST。所以,如果我想删除第2行,id想要这样的结果:
line1with some random stuff here
line3 has some other neat stuff
line4 is the last line in the textfile
注意我不想在线之间留下任何空间。
〜代码示例请!即使这是不可能的,任何帮助将不胜感激! :)
答案 0 :(得分:5)
最简单的方法就是这样:
string filePath = ...
List<string> lines = new List<string>(File.ReadAllLines(filePath ));
lines.RemoveAt(2); //Remove the third line; the index is 0 based
File.WriteAllLines(filePath, lines.ToArray());
请注意,这对于大型文件来说效率非常低。
答案 1 :(得分:2)
假设你有一个lineIsGood
方法确定给定的行是否是你想保留的(在你的情况下,你可以检查它是否不是第二行,但我假设你最终需要更强大的标准:
Queue<string> stringQueue = new Queue<string();
string tempLine = "";
StreamReader reader = new StreamReader(inputFileName);
do
{
tempLine = reader.ReadLine();
if (lineIsGood(tempLine))
{
stringQueue.Enqueue(tempLine);
}
}
while(reader.Peek() != -1);
reader.Close();
StreamWriter writer = new StreamWriter(inputFileName);
do
{
tempLine = (string) stringQueue.Dequeue();
writer.WriteLine(tempLine);
}
while (stringQueue.Count != 0);
writer.Close();
答案 2 :(得分:0)
可能使用StreamWriter.Write(char [] buffer,int index,int count)重载。
它的优点是能够在文件中的某个点开始写入。因此,您需要做的就是读取行并计算您传递的字符,读取您想要更改的行,获取其长度,然后像这样使用
StreamWriter.Write(NewLine.CharArray(),CharCount,线路长度)