Veröffentlicht 9. Februar 200520 j hallo, ich möchte meinen stringinhalt in eine Datei schreiben. ist die datei nicht da muss ich erzeugen, sonst überschreiben. ich hab aber leider keine Ahnung wie ich des anstelle. Ciao Antibiotik
9. Februar 200520 j Schau dir mal den Namespace System.IO genauer an. Dort befinden sich streamWriter (?) Klassen und deren Erben, die das erledigen können.
9. Februar 200520 j aus msdn <code> using System; using System.IO; using System.Collections; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; class SerializeTest{ public static void Main(String[] args) { Console.WriteLine ("Objektdiagramm erstellen"); ArrayList l = new ArrayList(); for (int x=0; x< 10; x++) { Console.WriteLine (x); l.Add (x); } // end for Console.Write ("Objektdiagramm wird auf Datentrger serialisiert."); Stream s = File.Open("foo.bin", FileMode.Create, FileAccess.ReadWrite); BinaryFormatter b = new BinaryFormatter(); b.Serialize(s, l); s.Close(); Console.WriteLine ("Abgeschlossen."); Console.Write ("Objektdiagramm wird auf Datentrger deserialisiert."); Stream r = File.Open("foo.bin", FileMode.Open, FileAccess.Read); BinaryFormatter c = new BinaryFormatter(); ArrayList p = (ArrayList) c.Deserialize®; Console.WriteLine ("Abgeschlossen."); foreach (int i in p) { Console.WriteLine (i); } r.Close(); Console.WriteLine ("\r\nDrcken Sie zum Beenden die EINGABETASTE."); Console.Read(); } // end main } // end class </code> wenn die datei vorher weg muss, gibt es noch File.Delete("c:\*.*"); bigredeyes
9. Februar 200520 j Ich glaub so gehts einfacher using System.IO; private void BeliebigeMethode() { try { using (StreamWriter writer = File.CreateText(@"C:\Temp\Testdatei.txt")) { //Hier den Dateiinhalt schreiben writer.WriteLine("Das ist ein Testtext"); } } catch { //Hier definieren, wie sich im Fehlerfall verhalten werden soll. } } Das erstellt eine Datei im Verzeichnis "C:\Temp" und legt dort eine Datei "Testdatei.txt" an. Falls eine solche Datei vorhanden ist, wird diese überschrieben. Dabei kann es natürlich zu einem Fehler kommen (dann wenn z.B. nicht auf die Datei zugegriffen werden kann, weil die noch jemand auf hat).
17. Januar 201114 j Ich hätte da mal ne Anschlussfrage.. Ich habe eine for Schleife, die bei jedem Durchlaufen einen Wert zurückgibt. Diese Werte möchte ich in einer .txt Datei speichern. Mein Problem: Es wird immer nur der Wert geschrieben der zuletzt ausgegeben wird. Meine Frage: Wie kann man alle Werte (zb jeden auf einer neuen Zeile) die zurückgegeben werden speichern? thx h3ll5ur7er
17. Januar 201114 j Du möchtest also eine bestehende Datei erweitern statt sie durch eine neu zu ersetzten, richtig? In dem Fall kannst du das Beispiel von oben ebenfalls verwenden. Allerdings verwendest du dann statt File.CreateText(... eben File.AppendText(... MfG Martin H.
17. Januar 201114 j public void Serialize(IEnumerable ObjectToSerialize) { using (StreamWriter sw = new StreamWriter(filename, true)) { foreach (var item in ObjectToSerialize) { sw.Write("{0},", item); } sw.Close(); } } [/PHP]
18. Januar 201114 j Wäre es nicht schöner/eleganter wenn man nicht jedes mal in die Datei schreibt, sondern erst alles zu einem String zusammenfügt und dann am Ende diesen String schreibt??? private void writeToFile(string[] text) { string toWrite = ""; foreach( string val in text) toWrite += val; // evtl noch + "\n" using(StreamWriter writer = new StreamWriter(path, true)) { writer.Write(toWrite); writer.Flush(); writer.Close(); } }
18. Januar 201114 j Dann solltest du aber niemals ein String Objekt verändern sondern einen StringBuilder nehmen
18. Januar 201114 j Ok Was ich schon immer mal wissen wollte (Hoffe ich kann das hier mal kurz fragen und meine Frage ist nicht allzu dumm....) Welche Vorteile bietet denn ein StringBuilder gegenüber der einfach aneinanderkettung von Strings???
18. Januar 201114 j Weil wenn du die string Klasse verwendest jedesmal ein neues Objekt erzeugt wird. Das schafft natürlich einen erheblichen Overhead und gerade in Schleifen ist der StringBuilder da deutlich im Vorteil da hier einfach nur das vorhandene Objekt erweitert wird.
18. Januar 201114 j Wäre es nicht schöner/eleganter wenn man nicht jedes mal in die Datei schreibt, sondern erst alles zu einem String zusammenfügt und dann am Ende diesen String schreibt??? Elegant in welchem Sinne? foreach (var item in ObjectToSerialize) { sw.Write("{0},", item); } sw.Close();[/PHP] In dem Falle sehe ich auf einen Blick, dass über [i]ObjectToSerialize[/i] iteriert wird und entsprechend [i]item[/i]weise in den Stream geschoben wird. [PHP] using(StreamWriter writer = new StreamWriter(path, true)) { writer.Write(toWrite); writer.Flush(); writer.Close(); } Das sehe ich hier nicht. Mal ganz davon abgesehen, dass ich bei längerem Code nachschlagen müsste, was hier eigentlich geschrieben wird. toWrite ist eher Nichtssagend. Am Rande: string toWrite = ""; // besser = String.Empty Technisch gesehen wird der Code wohl so ausgeführt werden, wie Du ihn schreibst, i.e. es wird erst ein Puffer beschrieben, der anschließend auf Platte weggeschrieben wird. Zum Thema StringBuilder: Concatenating Strings Efficiently Bearbeitet 18. Januar 201114 j von lilith2k3
25. Februar 201114 j Ich hab hierzu auch mal ne Anschlussfrage: und zwar möchte ich das mein Programm mir immer eine neue Textdatei erstellt(was es auch tut) und im Namen der Textdatei soll das aktuelle Datum und Uhrzeit stehen. Das Datum ist kein Problem aber bei der Uhrzeit bricht er immer ab. Kann mir jemand helfen? Danke und Gruß
25. Februar 201114 j Kann ich die irgendwie durch Striche oder so ersetzen? Bzw hab ich ne Möglichkeit trotzdem die Uhrzeit mit rein zu bringen in den Namen? Danke und Gruß
25. Februar 201114 j wenn du ein string replace auf : zu - machst z.b. ja. oder du nimmst eine andere Datumsform a la 20110225 oder so... sortiert sich auch sehr schön danach
26. Februar 201114 j Habe auch noch eine Frage Mit dem StreamReader kann man ja sagen in wlecher Codirung die Datei vorliegt. Kann man dem StreamWriter auch sagen in welcher Codierung er die Datei nachher abspeichern soll? Ich bekomm nämlich leider nur müll aus der Datei.
27. Februar 201114 j Am Rande: string toWrite = ""; // besser = String.Empty Kannst Du, oder jemand Anders, mir sagen, was hier genau der Unterschied ist bzw. warum man lieber String.Empty benutzen sollte? MfG AnDi_P
27. Februar 201114 j Kannst Du, oder jemand Anders, mir sagen, was hier genau der Unterschied ist bzw. warum man lieber String.Empty benutzen sollte? Ich finde String.Empty trägt zur Lesbarkeit bei - der Autor macht deutlich, dass er einen Leerstring intendiert hat; und nicht, dass der String aus irgendwelchen Gründen leer ist.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.