Zum Inhalt springen

C#: text in datei schreiben


Antibiotik

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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).

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 5 Jahre später...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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();

   }

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von lilith2k3
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...