Intereting Posts
Azure Функции: настраивать запуск blob только для новых событий .NET Release очень медленный при запуске метода в первый раз. Как исправить это с помощью NGEN? Связывание datagridview с несколькими таблицами запросов linq-to-sql Добавить строку запроса в качестве словаря значений маршрута в ActionLink Resharper: Возможное присвоение null сущности, помеченной атрибутом notnull Объяснение MySqlBulkLoader Измените изображение PictureBox на изображение из моих ресурсов? Начало работы с Noda Time Ошибка: эта операция приведет к созданию неправильно структурированного документа Функция базового вызова, затем унаследованная функция Как я могу получить значок filetype, который показывает Windows Explorer? Деформация производительности сортировки строк в VS2010 по сравнению с VS2008 Как я могу вызвать локальную функцию внутри запроса LINQ? Получить адрес электронной почты текущего пользователя в Outlook 2007 System.OutOfMemoryException из-за большого словаря

почему File.copy работает, но File.OpenRead запрашивает доступ запрещен?

Я хочу скопировать зашифрованный файл, который используется другим процессом.

Это работает:

System.IO.File.Copy("path1", "path2",true); 

но приведенный ниже код не работает. Запрос «отказ в доступе к файлам»:

 using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))//access denied open file { using (Stream copyFileStream = new StreamDecryption(new FileStream(copyTo, FileMode.Create))) { } } 

Как я могу скопировать зашифрованный файл, если файл используется другим процессом?

Спасибо

Обновление : я использовал этот код и работал для меня:

 using (var fileStream = new System.IO.FileStream(@"filepath", System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite)) { } 

Если вы используете FileShare.Read , что происходит неявно в вашем примере, открытие файла не удастся, если другой процесс уже открыл файл для записи.

 File.OpenRead(fileName) new FileStream(fileName, FileMode.Open, FileAccess.Read) new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) 

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

 new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)