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) При использовании имени файла в списке - это имя должно исчезнуть оттуда