Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/68: Рейтинг темы: голосов - 68, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 32

Ошибка: "Процесс не может получить доступ к файлу, так как этот файл используется другим процессом"

19.11.2014, 23:31. Показов 12920. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я написал код кнопки сохранитьToolStripMenuItem, у меня в коде вылезает ошибка: Процесс не может получить доступ к файлу "C:\Users\igorDen\Documents\проба.xm l", так как этот файл используется другим процессом.
Помогите, пожалуйста, исправить её, желательно кодом. Вот мой код. Заранее спасибо.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string adr;
            Stream myStream = null;
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
 
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                   
 
                        adr = saveFileDialog1.FileName;
                        XmlTextWriter textWritter = new XmlTextWriter(adr, Encoding.UTF8);
                        textWritter.WriteStartDocument();
                        textWritter.WriteStartElement("Readers");
                        textWritter.WriteEndElement();
                        textWritter.Close();
 
                        XmlDocument document = new XmlDocument();
                        document.Load(adr);
 
 
                        for (int a = 0; a < dataGridView1.Rows.Count - 1; a++)
                        {
                            XmlNode Readers = document.CreateElement("tovar");
                            document.DocumentElement.AppendChild(Readers);
 
                            XmlNode row1 = document.CreateElement("Id");               row1.InnerText = dataGridView1.Rows[a].Cells[0].Value.ToString(); Readers.AppendChild(row1);
}
вот в этой строке такая ошибка: XmlTextWriter textWritter = new XmlTextWriter(adr, Encoding.UTF8);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2014, 23:31
Ответы с готовыми решениями:

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Моя программа должна добавлять на форму картинку, уменьшив ее до размеров 70х70, и скопировать ее в отдельную папку (этому я уже ее...

Процесс не может получить доступ к файлу так как этот файл используется другим процессом
sr = new StreamReader(&quot;Records.txt&quot;, Encoding.GetEncoding(1251)); while (!sr.EndOfStream) { ...

Исключение "Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Добрый день! Подскажите, пожалуйста, почему при чтении файла появляется исключение System.IO.IOException: &quot;Процесс не может получить...

6
45 / 45 / 32
Регистрация: 15.04.2011
Сообщений: 187
19.11.2014, 23:57
У тебя случаем нигде не висит процесс\поток который держит файл открытым?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18259 / 14184 / 5366
Регистрация: 17.03.2014
Сообщений: 28,870
Записей в блоге: 1
20.11.2014, 15:32
IgrDen, ты открываешь файл в этой строке:
C#
1
if ((myStream = saveFileDialog1.OpenFile()) != null)
Функция OpenFile открывает файл в монопольном режиме. То есть пока он открыт никто не сможет его открыть еще раз. И поэтому конструктор XmlTextWriter генерирует исключение. Кроме того подобная проверка не имеет смысла т.к. если OpenFile() не сможет открыть файл, то она сгенерирует исключение, а не вернет null.

Код лучше переписать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (saveFileDialog1.ShowDialog() != DialogResult.OK) return;
string adr = saveFileDialog1.FileName;
 
XmlDocument document = new XmlDocument();
document.LoadXml("<Readers />");
 
for (int a = 0; a < dataGridView1.Rows.Count - 1; a++)
{
    XmlNode Readers = document.CreateElement("tovar");
    document.DocumentElement.AppendChild(Readers);
 
    // ....
}
 
document.Save(adr);
0
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 32
20.11.2014, 18:23  [ТС]
Спасибо большое! Попробую переписать код.
0
3 / 3 / 1
Регистрация: 08.12.2012
Сообщений: 47
24.05.2015, 17:57
Помогите, плиз та же проблема и я не знаю что делать!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private int NotRepeat(FileStream file_input, string FileName)
        {
            MemoryStream tmp = new MemoryStream();
            int curByte;
            int nextByte;
            byte count = 1;
 
            do
            {
                count++;
                curByte = file_input.ReadByte();
                nextByte = file_input.ReadByte();
                if (nextByte != -1)
                    file_input.Position--;
                if (curByte != nextByte)
                    tmp.WriteByte((byte)curByte);
            }
            while ((curByte != nextByte) && (tmp.Length < 255) && (nextByte != -1));
 /*!здесь выбивает ошибку!!!!!!!!*/ FileStream file_output = new FileStream(FileName, FileMode.Append, FileAccess.Write);
            BinaryWriter bw = new BinaryWriter(file_output);
            bw.Write(single);
            bw.Write((byte)tmp.Length);
            bw.Write(tmp.ToArray(), 0, (int)tmp.Length);
            bw.Close();
            file_output.Close();
            return curByte;
        }
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 20:02
А file_input и file_output это один и тот же файл?
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 6
25.05.2015, 14:54
Удали все левые процессы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2015, 14:54
Помогаю со студенческими работами здесь

Ошибка: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом
Добрый день, в данном коде необходимо переместить файл из одной папки в другую. При try в одну папку, а при catch в другую, но выдает...

Процесс не может получить доступ к файлу, т.к. этот файл используется другим процессом
Здравствуйте! Собственно есть игра с выбором пользователей, имена которых хранятся в файле Users.txt. Если игрок заходит впервые(т.е. файла...

Процесс не может получить доступ к файлу xml т.к. этот файл используется другим процессом
Помогите решить проблему, пожалуйста. Как это пресечь? Когда пользователь сохраняет данные из DataGridView - создаётся файл xml с этими...

Процесс не может получить доступ к файлу, так как этот файл занят другим процессом
private void AvatarEditToolStripMenuItemClick(object sender, System.EventArgs e) { FileDialog fd = new OpenFileDialog(); fd.Filter...

IO Exception "Процесс не может получить доступ к файлу, т.к. этот файл используется другим процессом"
Здравствуйте, есть код private void t_Tick(object sender, EventArgs e) { // переменные для создания...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru