In Java habe ich Text aus einem Textfeld in einer String-Variablen namens "text".
Wie kann ich den Inhalt der Variablen "text" in einer Datei speichern?
java
file
file-io
text-files
Justin White
quelle
quelle
Apache Commons IO enthält einige großartige Methoden, insbesondere FileUtils enthält die folgende Methode:
Damit können Sie in einem Methodenaufruf Text in eine Datei schreiben:
Möglicherweise möchten Sie auch die Codierung für die Datei angeben.
quelle
FileUtils.writeStringToFile(new File("test.txt"), "Hello File", forName("UTF-8"));
Schauen Sie sich die Java File API an
ein kurzes Beispiel:
quelle
@Cleanup new FileOutputStream(...)
Sie einfach und Sie sind fertig.In Java 7 können Sie dies tun:
Weitere Informationen finden Sie hier: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403
quelle
content.getBytes(StandardCharsets.UTF_8)
kann verwendet werden, um die Codierung explizit zu definieren.Habe gerade etwas Ähnliches in meinem Projekt gemacht. Die Verwendung von FileWriter vereinfacht einen Teil Ihrer Arbeit. Und hier finden Sie ein schönes Tutorial .
quelle
.close()
das nicht wirft (zumindest in Java 7?), Ist der letzte Trycatch vielleicht überflüssig?throw new RuntimeException(e);
Verwendung
FileUtils.writeStringToFile()
von Apache Commons IO . Dieses spezielle Rad muss nicht neu erfunden werden.quelle
Sie können den folgenden Code ändern, um Ihre Datei aus einer Klasse oder Funktion zu schreiben, die den Text verarbeitet. Man wundert sich jedoch, warum die Welt einen neuen Texteditor braucht ...
quelle
In Java 11 wurde die
java.nio.file.Files
Klasse um zwei neue Dienstprogrammmethoden erweitert, um eine Zeichenfolge in eine Datei zu schreiben. Die erste Methode (siehe JavaDoc hier ) verwendet standardmäßig den Zeichensatz UTF-8 :Mit der zweiten Methode (siehe JavaDoc hier ) können Sie einen einzelnen Zeichensatz angeben:
Beide Methoden verfügen über einen optionalen Varargs-Parameter zum Festlegen von Optionen für die Dateibehandlung (siehe JavaDoc hier ). Im folgenden Beispiel wird eine nicht vorhandene Datei erstellt oder die Zeichenfolge an eine vorhandene angehängt:
quelle
Ich bevorzuge es, wenn immer möglich, für diese Art von Operation auf Bibliotheken zu vertrauen. Dies macht es weniger wahrscheinlich, dass ich versehentlich einen wichtigen Schritt auslasse (wie die oben gemachten Fehler-Wolfsnipes). Einige Bibliotheken wurden oben vorgeschlagen, aber mein Favorit für diese Art von Dingen ist Google Guava . Guava hat eine Klasse namens " Dateien", die für diese Aufgabe gut geeignet ist :
quelle
Charsets.UTF-8
.Charsets.UTF_8
eigentlichFiles.asCharSink(file, charset).write(text)
Verwenden Sie die Apache Commons IO-API. Es ist einfach
Verwenden Sie API als
Maven-Abhängigkeit
quelle
Falls Sie eine Textdatei erstellen müssen, die auf einer einzelnen Zeichenfolge basiert:
quelle
Verwenden Sie dies, es ist sehr gut lesbar:
quelle
Sie können diese Methode in Ihre Klassen einfügen. Wenn Sie diese Methode in einer Klasse mit einer Hauptmethode verwenden, ändern Sie diese Klasse in statisch, indem Sie das statische Schlüsselwort hinzufügen. In beiden Fällen müssen Sie java.io. * importieren, damit es funktioniert. Andernfalls werden File, FileWriter und BufferedWriter nicht erkannt.
quelle
Sie könnten dies tun:
quelle
Verwenden von
Java 7
:quelle
Files.write(targetPath, bytes);
dann einfach, um die Datei zu überschreiben. Es wird wie erwartet funktionieren.Verwenden von org.apache.commons.io.FileUtils:
quelle
Wenn Sie nur einen Textblock in eine Datei verschieben möchten, wird dieser jedes Mal überschrieben.
In diesem Beispiel kann der Benutzer eine Datei mit einer Dateiauswahl auswählen.
quelle
Es ist besser, den Writer / Outputstream in einem finally-Block zu schließen, falls etwas passiert
quelle
}}
quelle
Ich denke, der beste Weg ist
Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
:Siehe javadoc :
Bitte beachten Sie. Ich sehe, dass die Leute bereits mit dem integrierten Java geantwortet haben
Files.write
, aber das Besondere an meiner Antwort, das niemand zu erwähnen scheint, ist die überladene Version der Methode, die anstelle einesbyte[]
Arrays eine Iterable of CharSequence (dh String) verwendet und dahertext.getBytes()
nicht erforderlich ist , was meiner Meinung nach etwas sauberer ist.quelle
Wenn Sie die Wagenrücklaufzeichen aus der Zeichenfolge in einer Datei behalten möchten, finden Sie hier ein Codebeispiel:
quelle
Mein Weg basiert auf Streams, da er auf allen Android-Versionen läuft und Ressourcen wie URL / URI benötigt. Jeder Vorschlag ist willkommen.
Streams (InputStream und OutputStream) übertragen Binärdaten. Wenn Entwickler eine Zeichenfolge in einen Stream schreiben, müssen sie diese zuerst in Bytes konvertieren oder mit anderen Worten codieren.
quelle
Sie können die ArrayList verwenden, um beispielsweise den gesamten Inhalt der TextArea abzulegen und als Parameter zu senden, indem Sie save aufrufen, da der Writer gerade Zeichenfolgenzeilen geschrieben hat. Anschließend verwenden wir das "for" zeilenweise, um am Ende unsere ArrayList zu schreiben Wir werden TextArea in txt-Datei zufrieden sein. Wenn etwas keinen Sinn ergibt, tut es mir leid, ist Google Übersetzer und ich, die kein Englisch sprechen.
Beobachten Sie den Windows-Editor, er springt nicht immer Zeilen und zeigt alle in einer Zeile an. Verwenden Sie Wordpad ok.
quelle