69 Stimmen

Zugriff auf den Pfad verweigert Fehler in C#

Ich habe einen ähnlichen Beitrag gelesen, aber ich komme einfach nicht auf das Problem.

Ich habe die Windows-Berechtigungen geändert und die Routen geändert.

Wenn ich versuche, eine Datei zu speichern, wird eine Ausnahme ausgelöst:

Zugriff auf den Pfad **** verweigert.

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;

164voto

Alan Punkte 6321

Sie versuchen, ein FileStream-Objekt für ein Verzeichnis (Ordner) zu erstellen. Geben Sie einen Dateinamen an (z. B. @" D:\test.txt ") und der Fehler wird verschwinden.

Übrigens würde ich vorschlagen, dass Sie den StreamWriter-Konstruktor verwenden, der als zweiten Parameter eine Kodierung annimmt, weil Sie sonst eine unangenehme Überraschung erleben könnten, wenn Sie später versuchen, die gespeicherte Datei zu lesen (mit StreamReader).

15voto

Renato Gama Punkte 15638

Haben Sie versucht, einen Dateinamen anzugeben?

z. B:

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

12voto

Taegost Punkte 1150

Tl;dr-Version: Stellen Sie sicher, dass Sie nicht versuchen, eine Datei, die im Dateisystem als schreibgeschützt gekennzeichnet ist, im Lese-/Schreibmodus zu öffnen.

Ich bin bei meinen Reisen auf diesen Fehler gestoßen, als ich versuchte, eine XML-Datei einzulesen. Ich habe festgestellt, dass unter bestimmten Umständen (siehe unten) dieser Fehler für eine Datei erzeugt wird, obwohl der Pfad und der Dateiname korrekt sind.

Einzelheiten der Datei:

  • Der Pfad und der Dateiname sind gültig, die Datei existiert
  • Sowohl das Dienstkonto als auch der angemeldete Benutzer haben Vollzugriffsrechte auf die Datei und den vollständigen Pfad
  • Die Datei ist als schreibgeschützt markiert
  • Es läuft unter Windows Server 2008 R2
  • Der Pfad zur Datei wurde mit lokalen Laufwerksbuchstaben angegeben, nicht mit einem UNC-Pfad.

Beim Versuch, die Datei programmgesteuert zu lesen, wurde das folgende Verhalten beobachtet, während genau derselbe Code ausgeführt wurde:

  • Wenn Sie als angemeldeter Benutzer ausgeführt werden, wird die Datei ohne Fehler gelesen
  • Wenn Sie als Dienstkonto ausgeführt werden, wird beim Versuch, die Datei zu lesen, die Fehlermeldung Access Is Denied (Zugriff verweigert) ohne Angabe von Details angezeigt

Um dies zu beheben, musste ich den Methodenaufruf von der Standardeinstellung (Öffnen als RW) auf das Öffnen der Datei als RO ändern. Sobald ich diese eine Änderung vorgenommen hatte, wurde kein Fehler mehr ausgegeben.

4voto

Tommy Beaton Punkte 41

Ich hatte dieses Problem schon länger, als ich zugeben möchte.

Ich musste VS einfach nur als Administrator ausführen, ein Anfängerfehler meinerseits...

Hoffentlich hilft das jemandem <3

1voto

chennaiah.P Punkte 9

Sie haben keine Berechtigung zum Zugriff auf die Datei. Bitte vergewissern Sie sich, ob Sie auf die Datei in diesem Laufwerk zugreifen können.

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

Sie müssen den zu erstellenden Dateinamen angeben. Bitte versuchen Sie dies, jetzt können Sie erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X