Есть папка в сети, в которой периодически создаются файлы. Есть необходимость копировать данные файлы в другой каталог. Нужно проверять, доступен ли файл для копирования, т.е. не дописывается ли он. Есть ли возможность проверить доступен ли файл для записи? Для примера, я открываю файл через Adobe Reader, данный файл не должен копироваться. Мне нужен ответ скорее на вопрос «Как узнать, открыт ли файл другой программой для изменения?»
Отслеживать
Александр Пузанов
задан 11 июл 2017 в 18:32
Александр Пузанов Александр Пузанов
2,775 3 3 золотых знака 31 31 серебряный знак 64 64 бронзовых знака
Для примера, файл может открыться программой Adobe Reader. Мне нужно знать, что данный файл копировать нельзя.
5 окт 2017 в 15:52
А если изменяющий процесс откроет ваш файл сразу после того, как проверка дала ответ — «можно копировать»? Более грамотный подход — копировать все, потом проверять результат сравнивая (например) длину файлов.
11 окт 2017 в 2:02
Как зайти в недавно открытые файлы и папки.Недавние файлы.Недавно использованные папки
Можно как вариант, но при больших размерах файла и длительной обработки сторонней программы думаю, что копирование займет времени куда больше. К примеру, опрос через каждую минуту, а файл 50 Мб обрабатывается пользователем 1 час — будет скопирован 60 раз. Ну зачем это?
На каждом этапе у меня есть свои проверки и этот вариант, что вы написали я учитываю, проверяю дату последнего изменения после копирования, а после копирования файл удаляется. В общем, многое учтено. НО! Мне не нужно знать открыт сторонней программой или нет. Вопрос только в этом.
11 окт 2017 в 7:20
Я понимаю, что увожу Вас в сторону от прямого решения запрошеного вопроса, заранее извините. Но в описаной ситуации лично я не стал бы «изобретать велосипед», а просто воспользовался бы одной из готовых программ синхронизации файловых систем — слишком много тут «подводных камней».
12 окт 2017 в 12:58
Вариант не плохой. На данный момент удалось решить данный вопрос. Как говорится «все гениальное просто». Одно скажу, что здравого решения по моему вопросу нет.
12 окт 2017 в 15:34
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Наиболее трезвый, на мой взгляд, способ понять занят ли файл другим процессом — это попытаться скопировать его и получить System.IO.IOException в случае ошибки ввода-вывода, которая как раз таки и будет возникать при отсутствии к нему доступа. Попытки реализовать метод что бы проверить блокирован файл или нет особого результата не дадут. Поскольку никто не гарантирует, что в промежутке между вызовом метода проверки на блокировку и копированием файла ни какой другой процесс его уже не занял.
Отслеживать
ответ дан 12 июл 2017 в 7:01
5,269 3 3 золотых знака 20 20 серебряных знаков 39 39 бронзовых знаков
Файл создается, записывается, закрывается и больше не используется. Если процесс сторонний и откроет, то только для чтения.
14 июл 2017 в 5:56
Так и есть. При копировании бьет исключение. Это то, что нужно. спасибо огромное.
18 июл 2017 в 13:07
Как удалить папку с компроматом
Файл невозможно удалить. но вот копируется он свободно. К примеру pdf документ, открыт через Adobe Reader.
5 окт 2017 в 14:08
+1, единственный правильный метод — выполнить действие и ловить исключения.
5 окт 2017 в 16:10
Обычно да, но под эту задачу нашлась специальная либа. Загадочная какая-то, но вроде рабочая.
5 окт 2017 в 17:26
Для этого можно использовать библиотеку со странным названием Restart Manager. Пример получения списка процессов, занявших файл (https://code.msdn.microsoft.com/windowsapps/How-to-know-the-process-704839f4):
Работает на ОС начиная с Windows Vista.
Источник: ru.stackoverflow.com
Как узнать, кто использует файл в Linux
В этой статье мы объясним, как узнать, кто использует тот или иной файл в Linux.
Это поможет вам узнать системного пользователя или процесс, который использует открытый файл.
Как посмотреть недавние документы на компьютере (Ответ)
Всем привет! Сегодня я расскажу вам, как посмотреть и открыть недавние документы в Windows 10 или 11, и где они вообще находятся в операционной системе. Сразу хочу предупредить, что если вы до этого чистили систему или использовали программу типа CCleaner, то эта информация могла быть стерта. Если же вам нужно дополнительно просмотреть журнал событий, историю браузера, корзину и загрузку – читаем советы из этой статьи (переходим по ссылке).
Я подробно описал три простых способа. В любом случае, если у вас что-то будет не получаться, или возникнут проблемы – пишите в комментариях, и портал WiFiGiD.RU вам с радостью поможет. Только старайтесь писать как можно подробнее.
Способ 1: Папка на системном диске
Найти последние сохраненные и открытые файлы на компьютере можно в специальной системной папке «Недавние документы». Эта папка хранится на диске «C:». Туда можно попасть двумя способами.
- Зажимаем волшебные клавиши:
+ R
- Далее откроется папка «Недавние документы». Здесь будут храниться ссылки (или ярлыки) на запущенные документы. Если кликнуть два раза левой кнопкой мыши по ярлыку – откроется файл.
Второй способ туда попасть – это открыть проводник или «Компьютер». Далее переходим по пути:
C:UsersИМЯ_ПОЛЬЗОВАТЕЛЯAppDataRoamingMicrosoftWindowsRecent
ПРИМЕЧАНИЕ! Как вы можете понять, папка «Recent» – это англоязычный вариант «Недавних документов».
Если вам нужно узнать расположение файла – кликните по ярлыку правой кнопкой мыши из выпадающего контекстного меню выберите «Свойства». Далее смотрим в строку «Объект» – это и есть точное расположение. Вы можете скопировать ссылку и вставить её в проводник для быстрого перехода.
Способ 2: Word, Excel, PowerPoint
Если вы хотите посмотреть документы, открытые в Microsoft Word, Excel, PowerPoint, то это можно увидеть в меню программы. Очень важно, чтобы вы запустили именно программу – проще всего это сделать через поиск.
Слева в блоке «Последние» вы можете увидеть, все файлы и документы, которые были открыты ранее. Также их сразу же можно запустить.
Способ 3: Поиск и меню «Пуск»
Раньше на Windows 10 недавние документы можно было увидеть, открыв «Поиск». Если они тут не отображаются – перейдите на вкладку «Документы». В Windows 11 недавние открытые файлы могут отображаться просто в меню «Пуск». У меня по каким-то причинам на десятке ничего не видно.
Полистав все настройки, я не смог найти, где включается эта функция, хотя у других ребят в интернете, судя по скриншотам, «Недавние документы» отображаются в поиске. Если вы найдете информацию, как эту штуку включать – напишите об этом в комментариях.
Источник: wifigid.ru