Как закрыть файл, используя Directory.EnumerateFiles, чтобы l oop через файлы C# - PullRequest
0 голосов
/ 26 февраля 2020

Я искал все выше и ниже и не могу найти что-либо конкретное c, возможно, из-за того, что мои знания ограничены.

Я перебираю файлы и делаю с ними "вещи": ​​

foreach (var file in Directory.EnumerateFiles(scannedFilesLocation, "*.tif"))
{               
    fileName = Path.GetFileName(file.ToString());

    var tifImage = Image.FromFile(file.ToString());
    // var imageContent = ImageHelper.ImageToByteArray(tifImage);
    var tiffArray = File.ReadAllBytes(file);
    string contentType = "";

    new FileExtensionContentTypeProvider().TryGetContentType(fileName, out contentType);

    var newScannedDocument = new AddDocumentToFileStore();

    newScannedDocument.DocumentName = fileName;
    newScannedDocument.ContentType = contentType;
    newScannedDocument.Content = tiffArray;
    newScannedDocument.Meta.Add("FileName", fileName);

    newScannedDocumentList.Add(newScannedDocument);
}

В конце l oop я хочу переместить или удалить файл, но когда я использую File.Delete(...), я получаю сообщение о том, что файл используется - что я полностью понимаю, но как мне закрыть этот c указанный файл для выполнения этого Delete?

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 26 февраля 2020

Редактировать: Кажется, что этот пост изменился по сравнению с тем, как я впервые его прочитал минуту go.

Это может сработать:

// destroy the reference
tifImage.Dispose();

Или

using (Image image = Image.FromFile(fileName))
{
   // do your processing
}

Я думаю, что это работает из-за очень занятой памяти у меня над шеей.

Еще одна вещь, которую вы могли бы попробовать, это сделать копию файла и делать свои "вещи".

System.IO.File.Copy(source, target); // (I think that is right, I don't have VS open at the moment).

Таким образом, у оригинала никогда не было открыто дескриптора, и если ваша копия находится во временном местоположении и по какой-либо причине вы не можете удалить копию во время обработки вашего файла, периодически удаляйте ее.

Может быть, это поможет, или вы можете позже выполнить удаление в другом процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...