1

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

我设法找到单独选择每个文件的字符串。我怎样才能一次选择所有文件。

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();
4

2 回答 2

2

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

于 2012-11-22T11:24:57.760 回答
0

首先,您应该使用SafeFileNames 属性

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();
    }
}

其次,您可以使用并行类来同时处理文件。

于 2012-11-22T11:52:43.050 回答