如何从文件中删除条目
本文关键字:删除 文件 | 更新日期: 2023-09-27 18:29:10
如果我只知道字符串的一部分,请尝试从csv文件中删除一些条目代码
//open File
FileStream fs = new FileStream(filePath, FileMode.Open,
FileAccess.ReadWrite);
StreamReader sr = new StreamReader(fs);
//divide file entry for separate lines
string []line = sr.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
// find required entry and create new List without it
List<string> finalData = new List<string>();
foreach (var l in line)
{
if (!line.Contains((dateTimePicker1.Text.ToString().Trim() + ','+ eventNameDeleteTextBox.Text.ToString().Trim()+',')))
finalData.Add(l);
}
// convert to array
string toCsvoutput = string.Join(Environment.NewLine, finalData.ToArray());
// viewTextBox1.Text=toCsvoutput;
//updateFile
sr.Close();
FileStream fs1 = new FileStream(filePath, FileMode.Open,FileAccess.Write, FileShare.None);
StreamWriter sw = new StreamWriter(fs1);
sw.WriteLine(toCsvoutput);
sw.Close();
结果——什么都没发生,我错在哪里了?
将行替换为l:
if (!l.Contains((dateTimePicker1.Text.ToString().Trim() + ','+
eventNameDeleteTextBox.Text.ToString().Trim()+',')))
finalData.Add(l);
你可以清理很多:
string skipText = (dateTimePicker1.Text.ToString().Trim() + ','+
eventNameDeleteTextBox.Text.ToString().Trim()+',')
var linesIn = System.IO.File.ReadLines(filePath);
var linesOut = linesIn.Where(line => ! line.Contains(skipText));
linesOut = linesOut.ToList(); // make sure the file is closed again
System.IO.File.WriteAllLines(filePath, linesOut);
foreach
语句中的条件可能总是通过。您应该使用调试来检查条件本身,确保它是您想要的。
另外,你应该做
string condition = dateTimePicker1.Text.ToString().Trim() + ','+ eventNameDeleteTextBox.Text.ToString().Trim()+',';
在foreach
语句之外,这样您就不会白白浪费时间。