Мне нужно удалить точную строку из текстового файла, но я не могу в течение всей моей жизни тренироваться, как это сделать.
Приветствуются любые предложения или примеры?
Вопросы, относящиеся
Мне нужно удалить точную строку из текстового файла, но я не могу в течение всей моей жизни тренироваться, как это сделать.
Приветствуются любые предложения или примеры?
Вопросы, относящиеся
Если строка, которую вы хотите удалить, основана на содержимом строки:
string line = null;
string line_to_delete = "the line i want to delete";
using (StreamReader reader = new StreamReader("C:\\input")) {
using (StreamWriter writer = new StreamWriter("C:\\output")) {
while ((line = reader.ReadLine()) != null) {
if (String.Compare(line, line_to_delete) == 0)
continue;
writer.WriteLine(line);
}
}
}
Или, если он основан на номере строки:
string line = null;
int line_number = 0;
int line_to_delete = 12;
using (StreamReader reader = new StreamReader("C:\\input")) {
using (StreamWriter writer = new StreamWriter("C:\\output")) {
while ((line = reader.ReadLine()) != null) {
line_number++;
if (line_number == line_to_delete)
continue;
writer.WriteLine(line);
}
}
}
Лучший способ сделать это - открыть файл в текстовом режиме, прочитать каждую строку с помощью ReadLine(), а затем записать в новый файл с помощью WriteLine(), пропуская одну строку, которую вы хотите удалить.
Как я знаю, не существует общей функции удаления-строки из файла.
Один из способов сделать это, если файл не очень большой, - загрузить все строки в массив:
string[] lines = File.ReadAllLines("filename.txt");
string[] newLines = RemoveUnnecessaryLine(lines);
File.WriteAllLines("filename.txt", newLines);
На самом деле вы можете использовать С# generics для этого:
var file = new List<string>(System.IO.File.ReadAllLines("C:\\path"));
file.RemoveAt(12);
File.WriteAllLines("C:\\path", file.ToArray());
Код ракета-носителя не требуется. Надейтесь, что этот простой и короткий код будет help.
List linesList = File.ReadAllLines("myFile.txt").ToList();
linesList.RemoveAt(0);
File.WriteAllLines("myFile.txt"), linesList.ToArray());
ИЛИ используйте this
public void DeleteLinesFromFile(string strLineToDelete)
{
string strFilePath = "Provide the path of the text file";
string strSearchText = strLineToDelete;
string strOldText;
string n = "";
StreamReader sr = File.OpenText(strFilePath);
while ((strOldText = sr.ReadLine()) != null)
{
if (!strOldText.Contains(strSearchText))
{
n += strOldText + Environment.NewLine;
}
}
sr.Close();
File.WriteAllText(strFilePath, n);
}
Прочитайте и запомните каждую строку
Определите тот, который вы хотите избавиться из
Забудьте, что один
Напишите остальную часть в верхней части файл
Вы работаете в операционной системе Unix?
Вы можете сделать это с помощью редактора потока sed. Прочтите справочную страницу для "sed"
Что? Используйте файл open, найдите позицию, затем очистите строку, используя null.
Готч это? Простой, поток, без массива, который быстро ест память.
Эта работа на vb.. Пример search line culture = id, где культура - имя и id - значение, и мы хотим изменить его на культуру = en
Fileopen(1,"text.ini")
dim line as string
dim currentpos as long
while true
line = lineinput(1)
dim namevalue() as string=split(line,"=")
if namevalue(0)="line name value that i want to edit" then
currentpos=seek(1)
fileclose()
dim fs as filestream("test.ini",filemode.open)
dim sw as streamwriter(fs)
fs.seek(currentpos,seekorigin.begin)
sw.write(null)
sw.write(namevalue+"="+newvalue)
sw.close()
fs.close()
exit while
end if
msgbox("org ternate jua bisa, no line found")
end while
что все..use #d
Это можно сделать в три этапа:
// 1. Read the content of the file
string[] readText = File.ReadAllLines(path);
// 2. Empty the file
File.WriteAllText(path, String.Empty);
// 3. Fill up again, but without the deleted line
using (StreamWriter writer = new StreamWriter(path))
{
foreach (string s in readText)
{
if (!s.Equals(lineToBeRemoved))
{
writer.WriteLine(s);
}
}
}