2016-06-10 14 views
2

Ich habe dieses Problem in C#, dass dieser Code ausgeführt wird, und es nicht durchläuft, gibt es mir einen Fehler "Datei von einem anderen Prozess verwendet wird" (oder ähnlich). Ich habe versucht, auf Stack nach Antworten zu suchen, aber ich konnte nicht alles zusammensetzen. Ich habe versucht, etwas mehr Code einzufügen (wie sie gesagt haben), aber reicht mir einfach mehr Fehler. Bitte helfen Sie, vielen Dank im Voraus!Datei wird von einem anderen Prozess verwendet

Im Folgenden finden Sie meine aktuellen Code =>

// let's create example.py 
string path = @"C:\example.py"; 
var stream = new FileStream(path, FileAccess.Read); 
var reader = new StreamReader(stream); 
if (!File.Exists(path)) { 
    File.Create(path); 
    TextWriter tw = new StreamWriter(path, true); 
    tw.WriteLine("# code to insert into target file"); 
} else if (File.Exists(path)) { 
    System.IO.File.WriteAllText(@"C:\example.py", string.Empty); // clear contents 
    TextWriter tw = new StreamWriter(path, true); 
    tw.WriteLine("# more code to insert into example.py"); 
} 

Das ist mein Original-Code (keine festen Versuche) =>

// let's create example.py 
string path = @"C:\example.py"; 
if (!File.Exists(path)) { 
    File.Create(path); 
    TextWriter tw = new StreamWriter(path, true); 
    tw.WriteLine("# code to insert into target file"); 
} else if (File.Exists(path)) { 
    System.IO.File.WriteAllText(@"C:\example.py", string.Empty); // clear contents 
    TextWriter tw = new StreamWriter(path, true); 
    tw.WriteLine("# more code to insert into example.py"); 
} 
+0

'File.Create (Pfad)' gibt einen Stream zurück. Es blockiert die Datei. Siehe meine Antwort hier für eine mögliche Lösung http://stackoverflow.com/questions/37676746/i-want-to-get-export-from-datagideview-to-text-file-but-i-get-foling-error? noredirect = 1 # comment62886667_37676746 –

+1

Off-Thema aber FileStream, StreamReader sollte manuell entsorgt werden. – din

+0

wrap Sie Objekte um eine 'using() {}' – MethodMan

Antwort

0

Sie haben FileStream zu schließen, die durch File.Create zurückgegeben:

File.Create(path).Close(); 

siehe MDSN für Details

https://msdn.microsoft.com/en-us/library/d62kzs03(v=vs.110).aspx

Ein besserer Ansatz ist jedoch nur in Datei zu schreiben:

if (File.Exists(path)) 
    File.AppendAllText(path, "# more code to insert into example.py"); 
    else 
    File.AppendAllText(path, "# code to insert into target file"); 

Oder sogar

1

Ich habe festgestellt, diese vollständig funktioniert ->

// let's create example.py 
const string path = @"C:\example.py"; 
using (FileStream fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) 
using (TextWriter sw = new StreamWriter(fileStream)) 
{ 
    { 
     sw.WriteLine("First line"); 
     sw.WriteLine("Second line"); 
     sw.Close(); 
    } 
} 
+0

Noch wichtiger ... verstehst du ** warum **? – Dudemanword

Verwandte Themen