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

次に、 ParallelClassを使用してファイルを同時に処理できます。

于 2012-11-22T11:52:43.050 に答える