LINUX.ORG.RU

C# ошибка удаления файла


0

3

При попытке удалить файл, получаю исключение, ошибку из-за доступа к файлу на windows, в linux же все нормально. А код такой:

zip_str = home_dir+@"\tmp_sender.zip";
FastZip zip_archive = new FastZip();
//Create zip archive
			Console.WriteLine ("Creating zip archive");
			if (Directory.Exists(tmp_dir)) {
				zip_archive.CreateZip(zip_str, tmp_dir, true, null);
				Directory.Delete(tmp_dir, true);
			}
if (File.Exists(zip_str)) {	
Console.WriteLine ("Deleting zip archive");
			File.Delete(zip_str);
			Console.WriteLine ("Work completed");
		}
Как вылечить?



Последнее исправление: raycast (всего исправлений: 2)

Я понимаю что это из-за попытки удаления в то время когда архив открыт на запись, дело в том что метода close(); я не нашел, и как его закрыть перед удалением неясно...

raycast
() автор топика
Ответ на: комментарий от raycast

close(); я не нашел, и как его закрыть перед удалением неясно...

Dispose() ?

obinos
()
Ответ на: комментарий от raycast

И вообще, неплохая привычка открывать ресурсы в блоке using() {}

obinos
()

zip_archive используется и блокирует удаление файла. Нужно что то типа:

try {
    FastZip fastZip = new FastZip();
...
}
finally {
    File.Delete(tempName);
}
Насколько понимаю using не поможет, FastZip не приводится к System.IDisposable.

at ★★
()

1. Попробуй

zip_archive.CreateZip(zip_str, tmp_dir, true, null);

заменить на

	
using (FileStream file_stream = File.Create(zip_str)) {
	zip_archive.CreateZip(file_stream, tmp_dir, true, null);
}

поможет?

2. Вместо

home_dir+@"\tmp_sender.zip";

лучше использовать

Path.Combine(home_dir, "tmp_sender.zip")
obinos
()
Ответ на: комментарий от encyrtid

Проверил этот кусок на win7 - УМВР.

Хм, действительно, опубликованный работает без проблем. Где то в другом месте не закрыто, ладно.

Давай весь код.

Если я весь выложу, меня забанят, перманентно :)

raycast
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.