Я пишу приложение, которое работает со спутниковыми изображениями, и мой начальник попросил меня взглянуть на некоторые из коммерческих приложений и посмотреть, как они ведут себя. Я обнаружил странное поведение, а затем, когда я искал, я нашел его и в других стандартных приложениях.
Эти программы сначала записывают в временную папку, а затем копируют ее в место назначения.
Пример: 7zip сначала извлекает во временную папку, а затем копирует извлеченные данные в место, в которое вы просили его извлечь данные.
Я вижу несколько проблем с этим подходом:
Временная папка может не иметь достаточно места, в то время как в предполагаемом месте может быть столько места.
Если это большой файл, для операции копирования может потребоваться немалое количество времени.
Я много думал об этом, но не увидел ни одного положительного момента в этом. Я что-то упустил или есть реальная выгода для этого?
источник
Ответы:
Несколько причин, которые я могу придумать:
TL; DR - в основном сводится к атомарности, то есть вы хотите сделать так, чтобы (в конечном месте) файл был либо завершен, либо отсутствовал вообще в любой момент времени.
источник
Это кажется проблемой в Windows, более конкретно связанной с управлением перетаскиванием.
Разработчики клиента WINSCP разработали свое собственное расширение оболочки, которое отменяет это поведение перетаскивания и позволяет сразу же перенести файл в нужную папку. Они объясняют хитрость в своей документации и, что более интересно, в чем проблема и как они ее решили.
Вот интересная часть:
Кроме того, специально для 7Zip: пользователь ray023 отвечает на этот вопрос в стэке SuperUser Q & A: https://superuser.com/a/422463
По сути, если вместо перетаскивания файла вы используете метод извлечения здесь, доступный в bith 7-ZIP и Winrar, файлы будут непосредственно извлечены в нужный каталог.
источник
Если вам необходимо выполнить какую-либо обработку данных в файле (декодировать / преобразовать / и т. Д.), То лучше использовать временный файл и, когда он будет завершен, и только если он завершен, передать результат в конечный пункт назначения.
Выгоды:
Я не вижу реальной выгоды от прямой записи в пункт назначения при обработке данных.
источник