使用OpenFileDialog和Multiselect搜索字符串

时间:2012-11-22 11:20:28

标签: c# winforms

我正在做一个练习,我需要在一组文件中找到一个字符串。

我设法找到单独选择每个文件的字符串。 如何同时选择所有文件。

openFileDialog.Multiselect = true;
DialogResult result = openFileDialog.ShowDialog();
string filename = openFileDialog.SafeFileName;
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
BufferedStream bs = new BufferedStream(fs);

StreamReader sr = new StreamReader(fs);
String s;
if (result == DialogResult.OK)
{
    while ((s = sr.ReadLine()) != null)
    {
        if(s.Contains("Specified string"))
        {
            MessageBox.Show(filename + " Contains the Specified string");
            break;
        }
    }

}
fs.Close();
sr.Close();

2 个答案:

答案 0 :(得分:2)

OpenFileDialog具有返回所有选定文件的属性(FileNamesSafeFileNames)。

答案 1 :(得分:0)

首先,您应该使用SafeFileNames Property

if (result == DialogResult.OK)
{
    foreach(string filename = openFileDialog.SafeFileName)
    {
        FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
        BufferedStream bs = new BufferedStream(fs);

        StreamReader sr = new StreamReader(fs);
        String s;

            while ((s = sr.ReadLine()) != null)
            {
                if(s.Contains("Specified string"))
                {
                    MessageBox.Show(filename + " Contains the Specified string");
                    break;
                }
            }

        fs.Close();
        sr.Close();
    }
}

第二,您可以使用Parallel Class同时处理文件。