IOException auf Datagridview Schreiben in Textdatei C #
-
19-09-2019 - |
Frage
Guten Morgen alle,
Ich bin mit einem Verfahren in meiner C # -Code ein paar Probleme, die einen Datagridview ermöglichen sollten, in eine TXT-Datei gespeichert werden.
Der Code ist wie folgt:
private void saveToTxt_Btn_Click(object sender, EventArgs e)
{
filenameText.Text = serviceDataGrid.Rows.Count.ToString();
//string toOutFile = @"C:\" + filenameText.Text+".txt";
string toOutFile = @"C:\hello.txt";
FileStream toFile = new FileStream(toOutFile, FileMode.Create);
TextWriter toText = new StreamWriter(toOutFile);
int count = serviceDataGrid.Rows.Count;
toText.WriteLine("\t\t" + filenameText.Text);
toText.WriteLine("\t\t" + directoryText.Text+"\n\n");
for (int row = 0; row < count-1; row++)
{
toText.WriteLine(serviceDataGrid.Rows[row].Cells[0].Value.ToString());
}
toText.Close();
toFile.Close();
}
Die folgende Zeile gibt den Fehler:
TextWriter toText = new StreamWriter(toOutFile);
IOException unhandled wurde. Der Prozess kann nicht auf die Datei zugreifen ‚C: \ hello.txt‘., Weil sie von einem anderen Prozess verwendet wird
Ich bin mir nicht ganz sicher, was das Problem ist, aber es wäre es vorschlägt, sind Konflikte zwischen Filestream und Textwriter.
Schuppen Kann jemand irgendein Licht auf das? Grüße
Lösung
Sie öffnen es zweimal; verlieren alle toFile
Sachen vollständig und Verwendung using
um toText
:
using(TextWriter toText = File.CreateText(toOutFile))
{
toText.WriteLine("\t\t" + filenameText.Text);
toText.WriteLine("\t\t" + directoryText.Text+"\n\n");
foreach(DataGridViewRow row in serviceDataGrid.Rows)
{
toText.WriteLine(row.Cells[0].Value.ToString());
}
}
Auch; tun Sie wirklich bedeuten WriteLine(... + "\n\n")
?
Andere Tipps
Wenn Sie mit Zeile
TextWriter toText = new StreamWriter(toOutFile);
die folgende Zeile nicht erforderlich ist, da Streamwriter (string filePath) Konstruktor wird eine Datei erstellen, wenn es nicht vorhanden ist.
FileStream toFile = new FileStream(toOutFile, FileMode.Create);
Und Marc ist richtig, Sie bereits Datei geöffnet haben einmal in anderen Instanzvariable, man kann wieder geöffnet werden.
Ich habe übersehen, dass Sie den Schriftsteller mit dem Dateinamen öffnen. Ich dachte, du hast Textwriter toText = new Stream (toFile);