[C#]Dateizugriffe

Alexander Schuc

crazy-weasel
Hallo.. =)

ich habe da ein kleines Problem mit einer TextDatei.

In einer bestimmten Funktion lese ich eine Datei Zeile für Zeile aus, ändere gegebenfalls etwas .. und speichere alle zeilen in einem String.
Diesen String will ich dannach in dieselebe Textdatei zurüsckschreiben ..

Als erstes erstelle ich einen StreamReader .. lese zeile für Zeile ein .. erstelle den String ..
erstelle einen StreamWriter und schreibe den String hinein .. bzw. so will ich es haben .. allerdinsg bekomme ich die Meldung das die Datei schon von einem anderen Prozess benutzt wird =(

Code:
string OutPutTXT = "";

try
{
	string line;
	StreamReader userfile = new StreamReader("user.txt", true);
	while (-1 != userfile.Peek())
	{
		[...]
	}
	userfile.Close();
	
}
catch (Exception e)
{
	changeLog("\r\n" + e);
}

try
{
	StreamWriter File = new StreamWriter("user.txt");
	File.Write(OutPutTXT);
	File.Close();
}
catch (Exception e)
{
	changeLog("\r\n" + e);
}

(ist das erste mal das ich mich mit dateien auseinander setze in c# .. )

Danke schonmal für jeden Hinweis,

mfg,
crazy-weasel
 
Sag mal wieso denn dieses try catch??
Was bewirkt/bringt das?
Und was heisst Exception, was bedeutet changeLog("\r\n" + e);?

Sorry das ich dir nicht helfen kann, es ist mir rätselhaft wieso der das bringt?!
 
das try catch hab ich eingebaut, damit falls was geschieht, es in mein Log-Fenster geschrieben wird .. und genau dazu ist die Funktion changeLog .. der Parameter, der an diese Funktion übergeben wird, wird ins Log-Fenster dazugeschrieben.

Exception e beudeitet einfach, das die Ausnahme, welche aufgetretten ist, in der Variablen e gespeichert ist ..

tya.. macht nichst .. wird sich schon aufklären,
hoffe antwortete da was du wissen wolltest...


//crazy-weasel
 
Exceptions sind ein Hilfsmittel zur Behandlung von Ausnahmesituationen in Programmen, insbesondere zur Fehlerbehandlung. Wenn eine Exception ausgelöst wird, verzweigt das Programm sofort zu einem Exception-Handler, der auf den Fehler reagieren kann. Durch die Benutzung von Exceptions wird der normale Kontrollfluß des Programms vom Kontrollfluß für Fehlerfälle getrennt, wodurch das Programm besser strukturiert wird und leichter zu warten ist. Der Einsatz von Exceptions garantiert, daß Fehler im ganzen Programm in einer konsistenten Weise behandelt und angezeigt werden. Belegte Systemressourcen können mit Sicherheit frei gegeben werden und Laufzeitfehler müssen ein Programm nun nicht mehr zwangsweise beenden.
 
so kann mans auch schön ausdrücken .. bzw. ganz richtig ..

goela, weißt du warum dieser fehler kommt..?

mal die gesamte Fehlermeldung (hätt ich wohl schon vorher dazugeben sollen..):
Code:
System.IO.IOException: The process cannot access the file "D:\_projects\crazyBOT\bin\Debug\user.txt" because it is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String str)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path)
   at crazyweasel.tools.irc.bot.crazyBOT.UBoxKeyDown(Object obj, KeyEventArgs kea) in d:\_projects\crazybot\main.cs:line 659

Code:
659: StreamWriter File = new StreamWriter("user.txt");
 
dazu gibt es auch noch einige bestimmte typen von exceptions. z.b. gibt es vordefinierte ausnahmefälle bei "division durch 0" oder zugriffsverletzungen.
damit kann man auf bestimmte ausnahmesituationen unterschiedlich reagieren und so grobe systemfehler abfangen und behandeln.
im übrigen gilt das nicht nur für fehler, sondern auch für andere ausnahmesituationen. z.b. wenn irgendwas besonders fehlerfrei funktioniert hat. aber im allgemeinen werden exceptions hauptsächlich für die behandlung von fehlern verwendet.

dein fehler deutet darauf hin, dass du die datei nicht schreiben kannst, weil ein anderes programm diese datei gerade zum lesen geöffnet hat. beende mal alle anderen programme, die auf diese datei zugreifen und versuchs dann noch mal.
oder benutz eine andere datei. ;)
 

Neue Beiträge

Zurück