Как я могу заблокировать файл при записи в него через FileStream?

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

Примечание, что параметризированный запрос не является тем же как специальным sql.

главная причина imo для тихого одобрения хранимых процедур сегодня больше имеет отношение к безопасности. При использовании хранимых процедур исключительно можно отключить, ВСТАВЛЯЮТ, ВЫБИРАЮТ, ОБНОВЛЯЮТ, УДАЛЯЮТ, ИЗМЕНЯЮТ, ОТБРАСЫВАЮТ и СОЗДАЮТ и т.д. полномочия для пользователя приложения, только оставлять его с ВЫПОЛНЯЕТСЯ.

Это обеспечивает немного дополнительной защиты против 2-е внедрение SQL порядка . Параметризированные запросы только защищают от 1-я инжекция порядка .

10
задан Bobby 23 August 2012 в 07:19
поделиться

2 ответа

Вы ищете четвертый параметр конструктора FileStream .

public FileStream(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share
)

Итак, в вашем случае:

FileStream BinaryFile = new FileStream(dpath, FileMode.Create,
                                       FileAccess.Write, FileShare.None);

FileShare -Enum:

Содержит константы для управления видом доступа к другому FileStream объекты могут относиться к одному и тому же файлу.

Члены:

  • Нет , запрещает совместное использование текущего файла. Любой запрос на открытие файла (этим или другим процессом) не будет выполнен, пока файл не будет закрыт.
  • Чтение , Разрешает последующее открытие файла для чтения. Если этот флаг не указан, любой запрос на открытие файла для чтения (этим или другим процессом) не будет выполнен, пока файл не будет закрыт. Однако, даже если этот флаг установлен, для доступа к файлу все равно могут потребоваться дополнительные разрешения.
  • Запись , Разрешает последующее открытие файла для записи. Если этот флаг не указан, любой запрос на открытие файла для записи (этим или другим процессом) не будет выполнен, пока файл не будет закрыт. Однако, даже если этот флаг указан, для доступа к файлу все равно могут потребоваться дополнительные разрешения.
  • ReadWrite , разрешает последующее открытие файла для чтения или записи. Если этот флаг не указан, любой запрос на открытие файла для чтения или записи (этим или другим процессом) не будет выполнен, пока файл не будет закрыт. Однако, даже если этот флаг указан, для доступа к файлу все равно могут потребоваться дополнительные разрешения.
  • Удалить , разрешает последующее удаление файла.
  • Inheritable , Делает дескриптор файла наследуемым дочерним элементом процессы. Это напрямую не поддерживается Win32.
23
ответ дан 3 December 2019 в 17:59
поделиться

Я не знаю, возможно ли это.

Например, Firefox сохраняет файлы при загрузке с другим именем, пока они не будут завершены. Когда все есть, он переименовывает его в исходное имя. Другой суффикс файла предотвратит попытки пользователей открыть его двойным щелчком.

Например, Firefox сохраняет файлы при загрузке под другим именем, пока они не будут завершены. Когда все есть, он переименовывает его в исходное имя. Другой суффикс файла предотвратит попытки пользователей открыть его двойным щелчком.

Например, Firefox сохраняет файлы при загрузке под другим именем, пока они не будут завершены. Когда все есть, он переименовывает его в исходное имя. Другой суффикс файла предотвратит попытки пользователей открыть его двойным щелчком.

-1
ответ дан 3 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: