C# 如果文本文件中存在字符串,则<;条件>;在C中#

C# 如果文本文件中存在字符串,则<;条件>;在C中#,c#,winforms,C#,Winforms,我需要检查文本文件中是否存在该字符串,然后继续。如果不存在,它将显示一个消息框,说明该ID不存在 在我的示例中,我尝试检查“testfile.txt”是否包含用户在TextBox1中输入的字符串,然后将包含该字符串的行复制到新的文本文件中。使用建议的方法,这里是我到目前为止的一个片段: string emp_profile = @"EmployeeData.txt"; //file to be checked string endata = @"EndData.txt"; //terminate

我需要检查文本文件中是否存在该字符串,然后继续。如果不存在,它将显示一个
消息框
,说明该ID不存在

在我的示例中,我尝试检查
“testfile.txt”
是否包含用户在
TextBox1
中输入的字符串,然后将包含该字符串的行复制到新的文本文件中。使用建议的方法,这里是我到目前为止的一个片段:

string emp_profile = @"EmployeeData.txt"; //file to be checked
string endata = @"EndData.txt"; //terminated employees data file
string end_tdata = @"end_tdata.txt"; //holds sample's data

//validates if eid exists and if it exists copies data of sample 
//plus txt_end.Text into temporary data file 
string[] dataline = File.ReadAllLines(emp_profile);
using (StreamWriter w = File.AppendText(end_tdata))
{
    foreach (var line in dataline)
    {
        if (line.Contains(txt_un.Text))
        {
            w.WriteLine(txt_end.Text + "," + line);

            w.Close();
        }
    }
}

string end_holddata = @"end_holddata.txt";

//read original file
string[] raw_data = File.ReadAllLines(endata);

using (StreamWriter r = File.AppendText(end_holddata))
{
    foreach (var line in raw_data)
    {
        if (!line.Contains(txt_un.Text))
            r.WriteLine(line);
    }
    r.Close();
}

//delete original file
File.Delete(endata);

//creates new data file with old data path
//and copies the temporary data held testdata
using (Stream input = File.OpenRead(end_holddata))
using (Stream output = new FileStream(endata, FileMode.Append,
                                      FileAccess.Write, FileShare.None))
{
    input.CopyTo(output);
}

//appends new data of sample into the newly created data file
using (Stream input = File.OpenRead(end_tdata))
using (Stream output = new FileStream(endata, FileMode.Append,
                                      FileAccess.Write, FileShare.None))
{
    input.CopyTo(output);
}

DialogResult result = MessageBox.Show("Data has been recorded.");

//clears all temporary files
if (result == DialogResult.OK)
{
    File.Delete(end_holddata);
    File.Delete(end_tdata);
}
我在这里试图做的是将不包含
txt\un.Text
“emp\u profile.txt”中的数据复制到
“end\u数据”中“
并将包含输入的行复制到另一个文件
end_tdata.txt
,删除旧数据文件以清除内容,然后将数据合并到与旧数据具有相同路径文件的新数据中。之后,临时数据文件将被删除

我试着将上面的代码段包含在这个文件中,但它没有按照我希望的方式工作

string[] dataline = File.ReadAllLines(emp_profile);
for (int i = 0; i < dataline.Length; i++)
{
    if (dataline[i].Contains(txt_un.Text))
    {

        //code snippet here
    }
    else
        MessageBox.Show("ID does not exist!");
}
string[]dataline=File.ReadAllLines(emp\U配置文件);
for(int i=0;i

任何帮助都将不胜感激!提前谢谢你

您正在关闭第一个循环中的流。如果您尝试编写多个,则应该得到一个异常line@Steve我移动了
w.Close()在foreach循环之后。但是当我运行程序时,即使ID不存在,它仍然会得到一个
消息框:数据已被记录
,对话框一直弹出,直到我按下OK按钮几次times@Steve如果ID确实存在,我得到
messagebox:id not found
然后
数据已被记录
在我单击OK之后,第一个对话框再次弹出,您正在关闭第一个循环中的流。如果您尝试编写多个,则应该得到一个异常line@Steve我移动了
w.Close()在foreach循环之后。但是当我运行程序时,即使ID不存在,它仍然会得到一个
消息框:数据已被记录
,对话框一直弹出,直到我按下OK按钮几次times@Steve如果ID确实存在,我得到
messagebox:id not found
然后
数据已经被记录
在我点击OK之后,第一个对话框再次弹出