web-dev-qa-db-fra.com

Accès au chemin refusé erreur en C #

J'ai lu un article similaire, mais je ne peux tout simplement pas comprendre le problème.

J'ai changé les permissions de Windows et les itinéraires.

Lorsque j'essaie de sauvegarder un fichier, il me lance l'exception: 

Accès au chemin **** refusé.

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;
39
aerojun

Vous essayez de créer un objet FileStream pour un répertoire (dossier). Spécifiez un nom de fichier (par exemple, @ "D:\test.txt") et l'erreur disparaîtra.

En passant, je vous suggérerais d'utiliser le constructeur StreamWriter qui prend un codage en tant que second paramètre, sinon vous risquez de subir une mauvaise surprise lorsque vous essayez de lire le fichier enregistré ultérieurement (à l'aide de StreamReader).

107
Alan

Avez-vous essayé de spécifier un nom de fichier?

par exemple:

string route="D:\\somefilename.txt";
10
Renato Gama

tl; dr version: assurez-vous que vous n'essayez pas d'ouvrir un fichier marqué en lecture seule dans le système de fichiers en mode lecture/écriture.

J'ai rencontré cette erreur lors de mes voyages en essayant de lire dans un fichier XML ..__ J'ai constaté que dans certaines circonstances (détaillées ci-dessous) cette erreur serait générée pour un fichier même si le chemin et le nom du fichier sont corrects.

Détails du fichier:

  • Le chemin et le nom du fichier sont valides, le fichier existe
  • Le compte de service et l'utilisateur connecté ont tous les deux des autorisations de contrôle total sur le fichier et le chemin complet.
  • Le fichier est marqué en lecture seule.
  • Il fonctionne sur Windows Server 2008 R2
  • Le chemin d'accès au fichier utilisait des lettres de lecteur locales, pas un chemin UNC

Lors de la tentative de lecture du fichier par programme, le comportement suivant a été observé lors de l'exécution du même code exact:

  • Lors de l'exécution en tant qu'utilisateur connecté, le fichier est lu sans erreur.
  • Lors de l'exécution en tant que compte de service, essayer de lire le fichier génère l'erreur Access Is Denied sans détails.

Afin de résoudre ce problème, je devais changer l'appel de méthode par défaut (Ouverture en tant que RW) pour ouvrir le fichier en tant que RO. Une fois que j'ai fait ce changement, il a cessé de générer une erreur.

5
Taegost

Vous n’avez pas l’autorisation d’accéder au fichier . Assurez-vous que vous pouvez accéder au fichier dans ce lecteur.

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

Vous devez fournir le nom du fichier pour créer . S'il vous plaît essayez ceci, maintenant vous pouvez créer.

1
chennaiah.P

Si votre problème persiste avec toutes ces réponses, essayez de modifier l'attribut de fichier comme suit:

File.SetAttributes(yourfile, FileAttributes.Normal);
0
CPJ