Доступ к ошибке путь запрещен в C#

Я прочитал аналогичный пост, но я просто не могу понять проблему.

Я изменил разрешения windows и изменил маршруты.

когда я пытаюсь сохранить файл, он бросает меня исключение:

доступ к пути **** запрещен.

string route="D:";
FileStream fs = new FileStream(route, FileMode.Create); <--here is the problem
        StreamWriter write = new StreamWriter(fs);
        patient person = new patient();
        patient.name = textBox1.Text;
        patient.name2 = textBox2.Text;

4 ответов


вы пытаетесь создать объект FileStream для каталога (папки). Укажите имя файла (например, @"D:\test.txt"), и ошибка исчезнет.

кстати, я бы предложил вам использовать конструктор StreamWriter, который принимает кодировку в качестве второго параметра, потому что в противном случае вы можете столкнуться с неприятным сюрпризом при попытке прочитать сохраненный файл позже (используя StreamReader).


вы пытались указать имя файла?

например:

string route="D:\somefilename.txt";

TL;dr версия: убедитесь, что вы не пытаетесь открыть файл, помеченный в файловой системе как только для чтения в режиме чтения/записи.

Я столкнулся с этой ошибкой в моих путешествиях, пытаясь прочитать в XML-файле. Я обнаружил, что в некоторых случаях (описано ниже) эта ошибка будет сгенерирована для файла, хотя путь и имя файла указаны правильно.

сведения о файле:

  • путь и имя файла правильны, существует файл
  • как учетная запись службы и вошедший в систему пользователь имеет разрешения на полный доступ к файлу и полный путь
  • файл помечен как доступный только для чтения
  • он работает на Windows Server 2008 R2
  • путь к файлу использовал буквы локального диска, а не UNC path

при попытке программного чтения файла при выполнении того же кода наблюдалось следующее поведение:

  • при запуске в качестве зарегистрированного пользователя, файл читается без ошибок
  • при запуске в качестве учетной записи службы, пытаясь прочитать файл генерирует доступ отказано ошибка без каких-либо деталей

чтобы исправить это, мне пришлось изменить вызов метода по умолчанию (открытие как RW) на открытие файла как RO. Как только я сделал это одно изменение, он перестал бросать ошибку.


у вас нет прав доступа к файлу. Пожалуйста, убедитесь, что вы можете получить доступ к файлу на этом диске.

string route= @"E:\Sample.text";
FileStream fs = new FileStream(route, FileMode.Create);

вы должны указать имя файла для создания. Пожалуйста, попробуйте это, теперь вы можете создавать.