Datei öffnen und speichern
-
Habe mir folgenden code zusammengebastelt:
Beim ausführen und drücken auf beide button nacheinander (1.Button leißt ein. 2. Button speichert es in die txt ab).
Bekomme ich einen fehler das die datei noch im zugriff ist.Wie behebe ich das ?
using System; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { StreamReader sr = new StreamReader(@"C:\end_text.txt", System.Text.Encoding.Default, true); TextAusgabe_1.Text = sr.ReadToEnd(); TextAusgabe_2.Text = sr.ReadLine(); //TextAusgabe_1.Multiline = true; //TextAusgabe_1.ScrollBars = ScrollBars.Both; //TextAusgabe_1.Height = 200; //TextBox1.Text = richTextBox1.Text; } private void button2_Click(object sender, EventArgs e) { string[] createText = new string[] { TextAusgabe_1.Text }; //, TextAusgabe_2.Text, "BlaBla" }; File.WriteAllLines(@"C:\end_text.txt", createText, Encoding.Default); } } }
-
Ja, wie wäre es die Datei nach dem Einlesen wieder zu schließen?
Am besten machst du das in einem "using-Block".
-
Jetzt sieht das ganze so aus, allerdings schreibt er immer nur eine Zeile in die txt-file. Denke mal in dem Fett makierten teil ist der fehler - wenn ja weiß ich nicht wie ich den ausbügeln soll.
Ziel ist es jede einzelne Zeile auszulesen und in eine Textbox einzufügen.
using System;
using System.Text;
using System.Windows.Forms;
using System.IO;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}private void button1_Click(object sender, EventArgs e)
{
using(
StreamReader sr1 = new
StreamReader(@"C:\end_text.txt", System.Text.Encoding.Default, true))
TextAusgabe_1.Text = sr1.ReadToEnd();using (
StreamReader sr2 = new
StreamReader(@"C:\end_text.txt", System.Text.Encoding.Default, true))
TextAusgabe_2.Text = sr2.ReadLine();
}private void button2_Click(object sender, EventArgs e)
{**string[] createText2 = new string[1] { TextAusgabe_2.Text };
File.WriteAllLines(@"C:\end_text.txt", createText2, Encoding.Default);string[] createText1 = new string[1] { TextAusgabe_1.Text};
File.WriteAllLines(@"C:\end_text.txt", createText1, Encoding.Default);**}
private void TextAusgabe_1_TextChanged(object sender, EventArgs e)
{
}
private void TextAusgabe_2_TextChanged(object sender, EventArgs e)
{
}
}
}
-
{ using( StreamReader sr1 = new StreamReader(@"C:\end_text.txt", System.Text.Encoding.Default, true)) TextAusgabe_1.Text = sr1.ReadToEnd(); using ( StreamReader sr2 = new StreamReader(@"C:\end_text.txt", System.Text.Encoding.Default, true)) TextAusgabe_2.Text = sr2.ReadLine(); }
Du ließt die gesamte Datei C:\end_text.txt aus und packst sie in TextFeld 1.
Dann ließt du die erste Zeile der Datei aus und packst die erste Zeile in das Textfeld 2.string[] createText2 = new string[1] { TextAusgabe_2.Text }; File.WriteAllLines(@"C:\end_text.txt", createText2, Encoding.Default); string[] createText1 = new string[1] { TextAusgabe_1.Text}; File.WriteAllLines(@"C:\end_text.txt", createText1, Encoding.Default);
Hier schreibst du den gesamten Inhalt aus dem zweiten Textfeld und speicherst diesen unter C:\end_text.txt
Anschließend nimmst du den gesamten Inhalt aus dem ersten Textfeld und speicherst diesen über die eben erstellte C:\end_text.txt - somit wird dieser Code unnütz, da die Datei direkt überschrieben wird:string[] createText2 = new string[1] { TextAusgabe_2.Text }; File.WriteAllLines(@"C:\end_text.txt", createText2, Encoding.Default);
Was genau dein Ziel ist habe ich jetzt nicht so ganz verstanden.
Dass die Daten scheinbar in eine Zeile geschrieben wird, hängt mit deiner Zeichenkodierung zusammen. Je nachdem wie kompatibel dein Editor ist, wird die Datei richtig angezeigt.
Gruß
J0
-
private void button1_Click(object sender, EventArgs e) { StreamReader sr = new StreamReader(@"C:\end_text.txt", System.Text.Encoding.Default, true); TextAusgabe_1.Text = sr.ReadToEnd(); TextAusgabe_2.Text = sr.ReadLine(); sr.Close(); //... }
Aber: Erst ReadToEnd und dann ReadLine ?
Dark