Файл занят другим процессом

1. kasper076 105 20.05.18 15:28 Сейчас в теме
Элементарный код:
&НаКлиенте
Процедура Команда1(Команда)
	
	ПутьКZip = "c:\Users\user1\Documents\Архивы\";
	КаталогТемп = КаталогВременныхФайлов();
	
	//Получим список архивов
	МассивФайловZip = НайтиФайлы(ПутьКZip, "*.zip");
	Для Каждого ТекФайлZip Из  МассивФайловZip Цикл
		
		ЧтениеZip = Новый ЧтениеZipФайла(ТекФайлZip.ПолноеИмя);
		
		Для Каждого ТекЭлемент Из ЧтениеZip.Элементы Цикл
			
			ЧтениеZip.Извлечь(ТекЭлемент, КаталогТемп);
			ЧтениеZip.Закрыть();
			
			УдалитьФайлы(ТекФайлZip.ПолноеИмя);
			
		КонецЦикла;
		
	КонецЦикла;
	
КонецПроцедуры
Показать


Однако в результате получаю ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(20)}: Ошибка при вызове метода контекста (УдалитьФайлы): Ошибка удаления файлов: Ошибка совместного доступа к файлу 'c:\Users\user1\Documents\Архивы\Архив1.zip'. 32(0x00000020): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.


В чем проблема?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kasper076 105 20.05.18 16:45 Сейчас в теме
Вопрос снят. Впопыхах разместил "УдалитьФайлы" во вложенном цикле.
3. kild 89 20.05.18 16:57 Сейчас в теме
Вы же закрываете чтение и пытаетесь удалить файл внутри архива.

Вообще пользуйтесь методом ИзвлечьВсе()
ИТС пример

Сообщить("Распаковка файла - " + ИмяАрхивногоФайла);
Сейчас = ТекущаяДата();

// Откроем файл для чтения
ЧтениеZIP = Новый ЧтениеZipФайла(ИмяАрхивногоФайла,
				ПарольАрхивногоФайла);

// Сообщим комментарий архива
Сообщить("Комментарий:");
Сообщить(ЧтениеZIP.Комментарий);

// Распакуем все файлы из архива
ЧтениеZIP.ИзвлечьВсе(ПапкаНазначения, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);

// Распакуем файлы по одиночке
Для Каждого Элемент Из ЧтениеZIP.Элементы Цикл
	Сообщить("Распаковка файла:" + Элемент.ПолноеИмя);
	ЧтениеZIP.Извлечь(Элемент,
			ПапкаНазначения,
			РежимВосстановленияПутейФайловZIP.Восстанавливать, 
			? (Элемент.Зашифрован, ПарольАрхивногоФайла, ""));
КонецЦикла;

ЧтениеZIP.Закрыть();

// Сообщим время, потребовавшееся для работы
Сообщить("Распаковка заняла " + (ТекущаяДата() - Сейчас) + " секунд(ы)");
Показать
4. kasper076 105 21.05.18 09:03 Сейчас в теме
(3) Я пытаюсь удалить сам архив. Но почему-то внутри цикла по элементам архива это невозможно, хотя чтение уже закрыто.
ИзвлечьВсе мне не оч подходит. Мне нужны только файлы с определенным расширением.
5. пользователь 10.10.19 10:05
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот