Ich habe eine StringWriter-Variable, sw
, die von einer FreeMarker-Vorlage ausgefüllt wird. Sobald ich sw
ausgefüllt habe, wie kann ich es in eine Textdatei drucken?
Ich habe eine for-Schleife wie folgt:
%Vor% Im Moment gebe ich nur auf dem Bildschirm aus. Wie mache ich das für eine Datei? Ich stelle mir vor, dass bei jeder Schleife mein sw
geändert wird, aber ich möchte, dass die Daten jeder Schleife in der Datei zusammengefügt werden.
Bearbeiten:
Ich habe den folgenden Code ausprobiert. Wenn es ausgeführt wird, zeigt es, dass file.txt
geändert wurde, aber wenn es neu lädt, hat die Datei immer noch nichts.
Wie wäre es mit
? %Vor% und Sie könnten auch einen Ausgabestream in Erwägung ziehen, den Sie direkt an template.process(data, os);
übergeben können, anstatt zuerst in einen StringWriter und dann in eine Datei zu schreiben.
Sehen Sie sich das API-Dokument für template.process(...)
an, um herauszufinden, ob eine solche Einrichtung verfügbar ist.
template.process(Object, Writer)
kann auch ein FileWriter-Objekt, das eine Unterklasse von Writer ist, als Parameter verwenden, so dass Sie wahrscheinlich so etwas tun können:
Sie können viele verschiedene Streams verwenden, um in eine Datei zu schreiben.
Ich persönlich arbeite gerne mit PrintWriter
hier
Sie können festlegen, dass die Datei im FileWriter angehängt wird (im folgenden Beispiel der Wert true):
Warum nicht einen FileWriter verwenden?
Öffnen Sie es, bevor Sie eine Schleife erstellen und die gewünschte Ausgabe generieren. Während Sie in den FileWriter schreiben, wird er an den Puffer angehängt und schreibt Ihre akkumulierte Ausgabe auf ein close()
Beachten Sie, dass Sie einen FileWriter im Modus überschreiben oder anfügen öffnen können, damit Sie ihn an vorhandene Dateien anhängen können.
Hier ist ein einfaches Tutorial .
Tags und Links java file-io stringwriter