“Занять” файл на время

172
25 мая 2019, 03:50

Разрабатываю приложение, которое участвует в цепочке перемещения файлов. То есть: как только в папке 1 появляется файл, мое приложение его считывает оттуда, записывает в папку 2 (сетевую), и из папки 2 его сразу забирает другое приложение. В данный момент копирование файлов реализовано следующим способом:

byte[] byteArray = File.ReadAllBytes(sourceFile);
File.WriteAllBytes(targetFile, byteArray);

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

Мне необходимо выполнить следующее: сразу после копирования каким-то образом "занять" файл в папке 2, чтобы успеть считать его оттуда и рассчитать его хеш, после чего "отпустить" его. Прошу подсказать, каким образом это можно сделать?

Answer 1

чисто в теории кода:

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.None);

должно быть достаточно что бы залочить файл.

Еще гуглится вот такой вот ответ интересный: https://stackoverflow.com/a/5522256/4423545

возможно, тебе будет полезен так же.

READ ALSO
Глобальный хук клавиш

Глобальный хук клавиш

По какой-то причине хук обрабатывается, но ничего не происходит, приложение просто напросто закрывается без каких-либо ошибок

138
Winforms Ribbon интерфейс под Windows 10?

Winforms Ribbon интерфейс под Windows 10?

Подскажите, пожалуйста, существует ли под Windows 10 бесплатная библиотека для C# WinForms для отображения Ribbon интерфейса?

150
Локализация игрового меню

Локализация игрового меню

Всем привет, у меня сейчас игра на eng языке хочу добавить ru языкПодскажите хороший способ локализации игрового меню

99