如何从文件中删除条目

本文关键字:删除 文件 | 更新日期: 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语句之外,这样您就不会白白浪费时间。