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

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

19.11.2014, 23:31. Показов 12955. Ответов 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
18304 / 14228 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru