в порядке, поэтому у меня есть текстовый файл с примером ниже
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
Обратите внимание, что я не хочу оставлять пробел между строками.
~ примеры кода, пожалуйста! и даже если это невозможно, любая помощь будет оценена!:)
Самый простой способ сделать это:
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());
Обратите внимание, что это будет очень неэффективно для больших файлов.
Предполагая, что у вас есть метод 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();
возможно использовать поток StreamWriter.Write(char [], int index, int count).
Преимущество заключается в возможности начать запись в точке в файле. Итак, все, что вам нужно сделать, это читать в строках и подсчитывать символы, которые вы передавали, читать в строке, которую хотите изменить, получить ее длину, а затем использовать ее так:
StreamWriter.Write(NewLine.CharArray(), CharCount, LineLength)