Der Prozess kann nicht auf die Datei zugreifen, da Sie von einem anderen Prozess (Datei wird erstellt, enthält aber nichts)
using System.IO;
class test
{
public static void Main()
{
string path=@"c:\mytext.txt";
if(File.Exists(path))
{
File.Delete(path);
}
FileStream fs=new FileStream(path,FileMode.OpenOrCreate);
StreamWriter str=new StreamWriter(fs);
str.BaseStream.Seek(0,SeekOrigin.End);
str.Write("mytext.txt.........................");
str.WriteLine(DateTime.Now.ToLongTimeString()+" "+DateTime.Now.ToLongDateString());
string addtext="this line is added"+Environment.NewLine;
File.AppendAllText(path,addtext); //Exception occurrs ??????????
string readtext=File.ReadAllText(path);
Console.WriteLine(readtext);
str.Flush();
str.Close();
Console.ReadKey();
//System.IO.IOException: The process cannot access the file 'c:\mytext.txt' because it is //being used by another process.
//at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, Diese
In jeder Datei-Operation, Die Datei wird Geöffnet und muss Geschlossen werden, bevor Sie Geöffnet. Wie klug, in den Betrieb 1 Schließen Sie die Datei-Stream für die Weiteren Operationen.
Sie schreiben in die Datei vor dem schließen filestream:
Der obige code sollte funktionieren, mit den Methoden, die Sie derzeit verwenden. Sie sollten auch einen Blick in die
using
Anweisung und wickeln Sie Ihre streams in einem using-block.File.AppendAllText
weiß nicht, über den stream, die Sie geöffnet haben, so wird intern versuchen, die Datei erneut öffnen. Weil Ihr stream blockiert den Zugriff auf die DateiFile.AppendAllText
fehl, werfen der Ausnahme, die Sie sehen.Schlage ich vor, du benutzt
str.Write
oderstr.WriteLine
statt, wie du bereits an anderer Stelle in Ihrem code.Ihre Datei wird erstellt, enthält aber nichts, weil die exception geworfen wird, bevor
str.Flush()
undstr.Close()
genannt werden.