Member 13151067 Ответов: 1

Как выполнить поиск в текстовом файле, написанном с помощью binary writer на C#?


я хочу искать по идентификатору в текстовом файле, написанном с помощью binary writer, и отображать остальные записи в текстовых полях это код-мой код поиска, но я получаю исключение IOException (процесс не может получить доступ к файлу 'D:\file.txt-потому что он используется другим процессом)
мой класс имеет recordsize=35; & amp; count=0;
Это данные, сохраненные в текстовом файле после двоичного записи (2 записи )

00001 1111 1111 1111100002 11111 11111 11111

Что я уже пробовал:

private void button2_Click(object sender, EventArgs e)
   {

       BinaryReader br = new BinaryReader(File.Open("D:\\SortedFile.txt", FileMode.Open, FileAccess.Read));
           for(int i = 0; i <Class1.count; i++)
           {
               br.BaseStream.Seek(Class1.count, SeekOrigin.Begin);
               if (br.Read() == int.Parse(textBox2.Text))
               {
                   MessageBox.Show("found");

                   textBox2.Text = int.Parse(br.ReadString()).ToString();
                   textBox3.Text = br.ReadString();
                   textBox4.Text = br.ReadString();
                   textBox5.Text = int.Parse(br.ReadString()).ToString();
                   textBox6.Text = br.ReadString();


               }

               Class1.count += Class1.rec_size;

               br.Close();
           }

       }

Dave Kreskowiak

Какого черта вы пишете текстовые файлы с помощью двоичного писателя? Вместо этого используйте StreamWriter. Это будет относиться к файлу как к текстовому файлу и сделает вашу жизнь намного проще.

1 Ответов

Рейтинг:
0

OriginalGriff

Сообщение об ошибке довольно ясно:

The process cannot access the file 'D:\file.txt' because it is being used by another process

Файл открыт где-то в другом месте, и когда он был открыт, ему была дана так называемая "эксклюзивная блокировка" (это нормально для файла, открытого для записи, чтобы предотвратить два процесса, пытающиеся изменить один и тот же файл и разрушить его друг для друга). До тех пор, пока блокировка не будет снята (обычно путем закрытия файла), он не может быть открыт никаким процессом, даже для чтения.

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