Прежде всего, просто не звоните File.Exists()
.Есть много вещей, которые могут привести к сбою доступа к файлу, даже когда File.Exists()
возвращает true
, так что то, что вы действительно можете при вызове этой функции, - это целая дополнительная поездка на диск ... что с точки зрения компьютера является медленным.Очень медленно.Невероятно медленныйИ вам все равно придется обрабатывать исключение, когда оно выходит из строя.
Вместо этого просто попробуйте открыть файл и узнать, как обрабатывать исключение в случае сбоя.Это один из (очень немногих) случаев, когда вы действительно должны полагаться на обработку исключений для нормального потока управления программой.
Это не так ... возможно, проблема с разрешениями все еще существуетздесь, хотя я думаю, что реальная проблема немного другая.Я заметил, что в коде используется путь для диска Z:
, который, скорее всего, является диском, привязанным к серверу, и упоминается домен.Теперь мне интересно, как работает код, потому что подключенные диски работают по-разному.
Обычно подключенные диски существуют как пользовательские конструкции, а не как системная конструкция (возможно, для создания подключенных дисков насистемный уровень, но это совсем не нормально или не рекомендуется, и они обычно не работают так, как вы ожидаете), так что разные пользователи могут иметь один и тот же диск, сопоставленный с разными местами, или один пользователь может сопоставить один и тот же диск и местоположение, используя разныеучетные данные, чтобы получить другой доступ, или один пользователь может иметь сопоставленный диск, а другой нет.И это может произойти, даже если у обоих пользователей есть активные сеансы на компьютере.
Точка обычно подключается к дискам не существует в определенных контекстах, если только вы не выполняете дополнительную работу, чтобы сделать их доступными,Это вроде как разрешения, но не совсем;это не вам было отказано в доступе, а подключенный диск просто не существует в этом контексте.Они не будут отображаться для запланированных задач, служб Windows, запуска от имени другого пользователя (иногда) и других ситуаций, которые я, вероятно, забыл.Часто даже запуска службы или задачи от одного и того же пользователя недостаточно, если пользователь еще не выполнил интерактивный вход в систему на компьютере.В этих случаях вам нужно использовать UNC \\server\share
путь.
Это также хорошо согласуется с зарегистрированной ошибкой:
Системе не удается найти указанный путь.
Она не говорит, что вам было отказано в доступе, а точнее даже не смог его найти.Как будто путь ... не существует.Кроме того, это объясняет проблему «не может быть создано»;вы не можете создать каталог на диске, который не существует.