Задать вопрос
@myrkonianin

Файл занят своим же процессом ....!?

Дело вот в чем... Если я открываю файл в своей программе, и пытаюсь этот же файл сохранить, мне выдает ошибку что файл занят другим процессом... И тут mind.exe has stopping working... И теперь как мне высвободить "из под себя" файл? Я что-то не вдупляю, помогите!
код где ошибка:
RichTextBox rtb = tabControl1.SelectedTab.Controls[0] as RichTextBox;
            //StreamWriter sr = new StreamWriter(openFileDialog1.FileName, false, Encoding.UTF8);

            if (tabControl1.SelectedTab.Text != "new " + tabControl1.SelectedIndex)
                {
                    saveFileDialog1.FileName = GetFileName(tabControl1.SelectedTab.Text);
                }

                if (tabControl1.TabPages.Count == 0)
                {
                    newTab();
                }
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    if (!File.Exists(saveFileDialog1.FileName))
                    {
                        rtb.SaveFile(GetFileName(saveFileDialog1.FileName), RichTextBoxStreamType.PlainText);
                        tabControl1.SelectedTab.Text = GetFileName(saveFileDialog1.FileName);
                    }
                    else
                    {
                        File.Delete(saveFileDialog1.FileName);
                        rtb.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
                        tabControl1.SelectedTab.Text = GetFileName(saveFileDialog1.FileName);
                    }
                }
  • Вопрос задан
  • 370 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Вы не можете сохранить файл, который читаете. Вы можете открыть файл для чтения и можете открыть для записи. Файловый поток нельзя открыть одновременно в двух режимах, и на чтение, и на запись. Если Вы открыли файл на чтение, то прежде чем его перезаписать, поток надо закрыть.

В Вашем случае возможно не использовался using или dispose, что-то, что закроет поток, ну или явно закрыть поток.
В общем, порядок такой: открыли файл на чтение (получили текст или байты), закрыли поток, изменили содержимое, открыли файл на запись, перезаписали, закрыли поток.

Если Вы используете класс File для работы с файлами, то закрытие он выполняет самостоятельно автоматом. Если же поток открывается, например, через StreamWriter, то за закрытием надо следить самостоятельно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы