Datei erstellen: Zugriff verweigert

sabeda

Grünschnabel
Hallo,

ich habe ein Problem, wenn ich in VB eine Datei erstellen will.
er sagt mir zugriff verweigert.

Hier mal der Codeabschnitt
Code:
 Dim path As String = "C:\Users\Public\Desktop\text.txt"

        ' Create or overwrite the file.
        Dim fs As FileStream = File.Create(path)

Kann mir da jemand helfen?
 
Hi sabeda,

versuche es einfach mal über den Weg, der hat bei mir zumindest wunderbar geklappt.

Nicht vergessen die System.IO einzubinden und wenn du eine textdatei schon dort liegen hast, darf diese nicht geöffnet sein oder schreibgeschützt, weil diese sonst nicht überschrieben bzw. gelöscht werden kann.

Code:
Dim path As String = "C:\Users\Public\Desktop\text.txt"

' Create or overwrite the file.
If Not Directory.Exists("C:\Users\Public\Desktop\") Then
	Directory.CreateDirectory("C:\Users\Public\Desktop\")
End If
If File.Exists("C:\Users\Public\Desktop\text.txt") Then
	File.Delete("C:\Users\Public\Desktop\text.txt")
End If

Dim fs As New FileStream(path, FileMode.Create)

Ich hoffe ich konnte dir weiterhelfen.

Ansonsten einfach nochmal hier nachgucken: http://msdn.microsoft.com/en-us/library/system.io.filestream(v=vs.71).aspx

Grüße Hale
 
Oder er hat gelinde gesagt keine Admin-Rechte, da der öffentliche Desktop nur für Admins zugänglich ist.
 
Vieleicht auch noch eine ander Möglichkeit
erst die alte datei löcschen falls sie da ist und danach erneut schreiben.

Code:
 //löschen
            if (System.IO.File.Exists("C:\\Test" + Bildformat))
            {
                
                try
                {
                    System.IO.File.Delete("C:\\Test" + Bildformat);
                }
                catch (System.IO.IOException e)
                {
                    Console.WriteLine(e.Message);
                    return;
                }
            }
 
Vieleicht auch noch eine ander Möglichkeit
erst die alte datei löcschen falls sie da ist und danach erneut schreiben.

Code:
 //löschen
            if (System.IO.File.Exists("C:\\Test" + Bildformat))
            {
                
                try
                {
                    System.IO.File.Delete("C:\\Test" + Bildformat);
                }
                catch (System.IO.IOException e)
                {
                    Console.WriteLine(e.Message);
                    return;
                }
            }

Das ist im Endeffekt das selbe wie ich geschrieben habe :D nur, dass ich keinen try-catch drum gebaut habe.

Dies ist aber eine gute Idee, wenn du immer zu einem Fehler gelangst bau mal den try-catch drum und poste hier die Exception-Message, damit wir genauer wissen, wo genau der fehler liegt.

Gruß
Hale
 
Zurück