none
Как реализовать сравнение по имени файла,а не по его содержимому? RRS feed

  • Вопрос

  • Здравствуйте!Есть код,в котором реализуется поиск объекта в заданной области по маске.В роли маски выступает отдельный файл. Так вот...прога считывает этот файл file.txt (маску) т.е. строки внутри этого файла и сравнивает их с содержимым других файлов. Если есть сходства,то результат выходит на экран. Все бы ничего....,но мне НЕ нужно сравнение содержимого файла,мне НУЖНО сравнение самого имени файла с маской. Кто знает как реализовать сравнение по имени файла,а не по его содержимому? Заранее спасибо.

    private int objects = 0;
    private void button1_Click(object sender, EventArgs e) //Выбор отдельной паки//
        {
            folderBrowserDialog1.ShowDialog();
            label1.Text = "Путь сканирования: " + folderBrowserDialog1.SelectedPath;
            objects = 0;
            label2.Text = "Обнаружено: " + objects.ToString();
            progressBar1.Value = 0;
            checkedListBox1.Items.Clear();
        }
     
        private void button2_Click(object sender, EventArgs e) //Поиск//
        {
            string[] search = Directory.GetFiles(@folderBrowserDialog1.SelectedPath, "*.*");
            progressBar1.Maximum = search.Length;
            foreach (string item in search)
            {
                try
                {
                    StreamReader stream = new StreamReader(item);
                    string read = stream.ReadToEnd();
                    string[] object = File.ReadAllLines("/file.txt");//маска//
     
                    foreach (string st in object)
                    {
     
                        if (Regex.IsMatch(read, st))
                        {
                            objects += 1;
                            label2.Text = "Обнаружено: " + objects.ToString();
                            checkedListBox1.Items.Add(item);
                        }
     
                        progressBar1.Increment(1);
                    }
     
                    stream.Dispose();
                    stream.Close();
                }
                catch
                {
                    string read = item;
                    string[] object = File.ReadAllLines("/file.txt");//маска//
                    foreach (string st in object)
                    {
     
                        if (Regex.IsMatch(read, st))
                        {
     
                            objects += 1;
                            label2.Text = "Обнаружено: " + objects.ToString();
                            checkedListBox1.Items.Add(item);
     
                        }
     
                        progressBar1.Increment(1);
     
                    }
                }
     
            }
     
        }

    23 июня 2013 г. 21:14

Ответы

  • Добрый день.

    Как нибудь так:

    string[] search = Directory.GetFiles(@folderBrowserDialog1.SelectedPath, "*.*");
    foreach (string item in search)
    {
        try
        {
            StreamReader stream = new StreamReader(item);
            string read = stream.ReadToEnd();
            string[] masks = File.ReadAllLines("/file.txt");//маска//
    
            foreach (string st in masks)
            {
    
                if (Regex.IsMatch(read, st))
                {
                    objects += 1;
                    label2.Text = "Обнаружено: " + objects.ToString();
                    checkedListBox1.Items.Add(item);
                }
    
                progressBar1.Increment(1);
            }
        }
        catch
        {
    
        }
    
    }

    24 июня 2013 г. 6:02
    Отвечающий