UnauthorizedAcces - Kann keine Datei schreiben
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
anhieb
auslese
code
dank
datei
datum
fehler
fehleranalyse
file
frage
http
inhalt
null
ordner
prozedur
string
system
test
textdatei
url
-
Hi,
ich versuche mich zur Zeit an C# und möchte im Moment in eine Textdatei schreiben.
string RandomString; RandomString = c_Crypt.GetPassword(); string activeDir = @"C:\temp\tReadz"; Path = System.IO.Path.Combine(activeDir, RandomString); System.IO.Directory.CreateDirectory(Path); System.IO.File.Create(@Path); System.IO.File.WriteAllText(@Path, File);
Wenn ich das allerdings ausführe, bekomme ich nur gesagt, dass ich keinen Zugriff auf diese Datei habe, die ich ja gerade erstellen wollte.
Schon gegooglet, nichts gefunden?
Schnelle Hilfe bitte!
Greetz
eS -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo evilstorys,
Du erzeugst ja einen Ordner und versuchst Ihn dann als Datei zu öffnen.
string RandomString; RandomString = c_Crypt.GetPassword(); string activeDir = @"C:\temp\tReadz"; System.IO.Directory.CreateDirectory(activeDir); string path = System.IO.Path.Combine(activeDir, RandomString); System.IO.File.WriteAllText(path, contents);
-
Oh.
Ja stimmt natürlich xD
Aber ich hab das genau so aus der MSDN kopiert, deswegen dachte ich das stimmt schon, viellicht sucht es sich ja automatisch aus, ob es eine Datei ist und legt dann eine an...
War bei genauerer Betrachtung natürlich enorm hirnbefreit.
So jetz aber folgendes Problem...
Er legt den Ordner an, die Datei auch.
Was er wiederum nicht tut, ist die Datei auch zu füllen...
Hier nochmal die gesamte Prozedur:
public string Download(int Number) { string Path; uTextDatei c_TextDatei = new uTextDatei(); uCrypt c_Crypt = new uCrypt(); if (Number == 1) { string File = c_TextDatei.ReadFile("http://evilstorys.4lima.de/perm1.txt"); string RandomString; RandomString = c_Crypt.GetPassword(); string activeDir = @"C:\temp\tReadz"; System.IO.Directory.CreateDirectory(activeDir); Path = System.IO.Path.Combine(activeDir, RandomString); System.IO.File.WriteAllText(Path, File); } else { Path = "Error"; } return Path; }
Brauchst du die Prozedur aus der TextDatei-Class auch zur Fehleranalyse? -
Hallo evilstorys,
der Fehler müsste eigentlich hier sein:
D.h. entweder das ReadFile() liefert keine Daten oder die Datei die Du liest ist leer.string File = c_TextDatei.ReadFile("http://evilstorys.4lima.de/perm1.txt");
Um ganz sicher zu gehen, kannst Du ja auch noch folgendes versuchen:
Dann sollte zumindest "Test" in der Datei stehen.System.IO.File.WriteAllText(Path, "Test");
evilstorys schrieb:
Sieht ganz danach aus
...
Brauchst du die Prozedur aus der TextDatei-Class auch zur Fehleranalyse?
Edit: Mein Browser sagt, dass es die Datei "http://evilstorys.4lima.de/perm1.txt" gar nicht gibt.
Beitrag zuletzt geändert: 10.3.2012 20:57:41 von darkpandemic -
dochdoch die Datei existiert, hatte bloss den Namen im Code geändert, damit ihr jetzt eben nichtauf anhieb seht wo die daten sind ;)
nichts für ungut ;)
Ja, ich denke der Fehler liegt in der Auslese...
public string ReadFile(String sFilename) { string sContent = ""; if (File.Exists(sFilename)) { StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default); sContent = myFile.ReadToEnd(); myFile.Close(); } return sContent; }
Das ist die Funktion, die ich dafür benutze...
Habt ihr eine Idee? -
Hallo evilstorys,
Deine ReadFile()-Methode funktioniert nur mit Dateien im Dateisystem bzw. auf Windows-Netzwerkfreigaben.
Du hast die Datei aber auf einem Webserver liegen. Dann musst Du sie mit HttpWebRequest herunterladen:
HttpWebRequest request; HttpWebResponse response = null; try { request = (HttpWebRequest)WebRequest.Create("http://evilstorys.4lima.de/perm1.txt"); request.Timeout = 10000; request.AllowWriteStreamBuffering = false; response = (HttpWebResponse)request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader myFile = new StreamReader(s); sContent = myFile.ReadToEnd(); } finally { if (response != null) response.Close(); }
Beitrag zuletzt geändert: 10.3.2012 22:55:23 von darkpandemic -
Ahh danke erstmal für deine Hilfe!
Das erscheint mir ja schon deutlich sinnvoller.
So wie es aussieht liefert das dann den Inhalt der Datei zurück (in sContent)?
Als einfachen String ohne Zeilenformatierung?
Und eine Frage noch: Liest der dann direkt aus dem Web oder lädt er die Datei temporär runter?
Wenn er sie runterlädt, löscht er sie dann acuh wieder automatisch oder muss ich das selber veranlassen?
Tut mir Leid wenn die Fragen billig klingen, das ist mein erstes Projekt...
Danke im Vorraus!
eS -
Hallo evilstorys,
eigentlich sollte der Inhalt der Datei in sContent sein. Der Inhalt ist 1:1 das was auch auf dem Webserver liegt. D.h. wenn in der Quelldatei Zeilenumbrüche enthalten sind, dann sind sie es auch in sContent.
Im Endeffekt wird die Datei heruntergeladen und im Arbeitsspeicher zwischengespeichert. Es kann sein, dass das Stückchenweise beim Lesen aus dem response-Stream passiert. Da bin ich mir jetzt aber nicht sicher. Auf jedenfall werden die Daten nicht auf der Festplatte zwischengespeichert, weshalb Du auch nichts löschen musst.
-
So vielen Dank!
Die Datei vom Webserver wird jetzt 1:1 runtergeladen. Danke! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage