Поиск по маске только выбранные имена в списке, а затем записать результаты в текстовом файле - PullRequest
0 голосов
/ 28 января 2019

stackoverflowers)!

Я пытаюсь сделать, используя этот код:

Записать совпадения в один файл ... но мой алгоритм перезаписывает данные и выбрасывает исключения

    private void button8_Click(object sender, EventArgs e) // adding

    {
        if (listBox1.SelectedIndex != -1)
        {
            DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\lavraschuk\Desktop\Files\");
            string folderName = dinfo.FullName;
            string filepath = Path.Combine(folderName, listBox1.Items[listBox1.SelectedIndex].ToString());
            if (File.Exists(filepath))
                searchMask2(listBox1); // using MaskMethod with current file
                listBox1.Items.RemoveAt(listBox1.SelectedIndex);
        }

        MessageBox.Show("File txt is ready");
    }

    void searchMask2(ListBox listBox1) // Search Method
    {
        {
            for (int i = listBox1.Items.Count - 1; i >= 0; i--)
            {
                if (listBox1.GetSelected(i))
                {
                    //string rootFolder = @"C:\Users\Anton\Desktop\С#folder";
                    string pattern = @"\b(I am happy*)\b";
                    using (StreamWriter sw = File.CreateText(@"C:\Users\Desktop\Target\target.txt"))
                    //foreach (var file in Directory.EnumerateFiles(rootFolder, "*.txt", SearchOption.AllDirectories))
                    //{
                    using (StreamReader sr = new StreamReader(listBox1.Items[i].ToString(), System.Text.Encoding.Default))
                    //using (StreamReader sr = new StreamReader(listBox1.Items[i].ToString(), true, System.Text.Encoding.Default))
                    {
                        string line;
                        while ((line = sr.ReadLine()) != null)
                        {
                            string newstring = line.Substring(0, 8);
                            Match match = Regex.Match(line, pattern, RegexOptions.IgnoreCase);
                            var name = Path.GetFileName(listBox1.Items[i].ToString());

                            if (match.Success)
                            {
                                var jk = (name + " " + newstring + " " + match.Value);
                                sw.WriteLine(jk);
                            }
                            else
                                sw.Write("");
                        }
                    }
                }
            }
        }
    }

Я бы хотел, чтобы мой код выполнял следующие аспекты:

1) Поиск среди файлов, выбранных в моем списке

2) Запись совпадений в файл с именем target.txt

3) При использовании имени файла в списке - это имя должно исчезнуть оттуда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...