2017-01-26 5 views
0

Ich habe eine Menge Antworten zu diesem Thema gelesen, aber keiner von ihnen hilft mir. Jetzt ist es 5 Jahre her, dass ich C# hatte und apperanterweise habe ich alles vergessen. Aber ich gehe gerne wieder in die Sprache, um sie für die Automatisierung zu nutzen. So, hier ist das Stück Code habe ich bereits:VisualStudio Express 2012: StreamReader gibt [System.UnauthorizedAccessException] Fehler

{ 
    string path = @"C:\Users\decraiec\Documents\Client Automated"; 
    //In this folder I will find all my XML files that I just want to load in a textbox 

    public Form1() 
    { 
     InitializeComponent(); 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     //create a way to read and write the files 
     //go get the files from my harddrive 
     StreamReader FileReader = new StreamReader(path); 
     //make something readable for what you have fetched 
     StreamWriter FileWriter = new StreamWriter(textBox1.ToString()); 
     int c = 0; 
     while (c == FileReader.Read()) 
     { 
      string load = FileReader.ReadToEnd();//read every xmlfile up to the end 
      string stream = FileWriter.ToString();//make something readable 
     } 

     try 
     { 
      textBox1.Text = FileWriter.ToString();//what you have made readable, show it in the textbox 
      FileWriter.Close(); 
     } 
     finally 
     { 
      if (FileReader != null) 
      { FileReader.Close(); } 
     } 
     if (FileWriter != null) 
     { FileWriter.Close(); } 
    } 
} 

Wenn ich diesen Code wie folgt ausführen werde ich bekommen:

An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll 
Additional information: Access to the path 'C:\Users\decraiec\Documents\Atrias Automated' is denied. 

Während ich hatte gehofft, dass alle XML-Dateien in das sehen Textfeld aufgelistet und anklickbar (- obwohl ich den anklickbaren Code noch einfügen muss) Ich habe in meinem Ordner und Unterordner und Dateien gesucht und ich habe Administratorrechte für alles. Über die [mscorlib.dll] habe ich keine Ahnung wo ich das finden kann.

Jetzt, wenn ich den StreamReader in eine use (var....;) VS verwickelt erkennt es nicht (rote Linien unter den Wörtern), dass ich vermisse eine Instanz eines Objekts oder etwas anderes Problem (nur versuchen, die Dinge zusammenkleben).

Könnte jemand bitte versuchen, mich in die richtige Richtung zu bringen?

+0

Änderungsdateien c Doppelpunkt in ein anderes Verzeichnis wie D –

+0

Ein anderes Problem in Ihrem Code: 'textBox1.ToString()' wird return 'System.Windows.Forms.TextBox, Text: ', nicht der Inhalt des Textfelds, verwenden Sie 'textBox1.Text' dafür. –

+0

Führen Sie das Programm unter dem Benutzer 'decraiec' aus? –

Antwort

0

Ich denke, Ihr Pfad ist ein Verzeichnis, keine Datei. Fast genau das gleiche Problem wurde hier angesprochen: Question: Using Windows 7, Unauthorized Access Exception when running my application

Was Sie tun können, ist ein DirectoryInfo Objekt auf dem Pfad erstellen und rufen Sie dann GetFiles darauf. Zum Beispiel:

DirectoryInfo di = new DirectoryInfo(directoryPath); 

Foreach(var file in di.GetFiles()) 
{ 
    string pathToUseWithStreamReader = file.FullName; 
} 
0

Sie müssen Directory.GetFiles verwenden, um alle Dateien zu erhalten in Ihrem „Client Automatisiertes“ Ordner mit Wohnsitz, dann Schleife durch sie und jede einzelne Datei in den Strom geladen werden.

var files = Directory.GetFiles(path); 
foreach (var file in files) 
{ 
    var content = File.ReadAllText(file); 
} 

Sie können mehr über sie hier lesen:
https://msdn.microsoft.com/en-us/library/07wt70x2(v=vs.110).aspx

auch - in der Regel, wenn Sie mit Dateien oder Verzeichnisse wie diese arbeiten, ist es eine gute Idee, um programmatisch zu überprüfen, ob sie existieren, bevor die Arbeit mit ihnen . Sie können es wie so:

if (Directory.Exists(path)) 
{ 
    ... 
} 

Oder mit Dateien:

if (File.Exists(path)) 
{ 
    ... 
} 
Verwandte Themen