Wie speichere ich einen String mit Java in einer Textdatei?

699

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?

Justin White
quelle

Antworten:

727

Wenn Sie lediglich Text und keine Binärdaten ausgeben, funktioniert Folgendes:

PrintWriter out = new PrintWriter("filename.txt");

Schreiben Sie dann Ihren String darauf, genau wie in jeden Ausgabestream:

out.println(text);

Sie benötigen wie immer eine Ausnahmebehandlung. Rufen out.close()Sie unbedingt an, wenn Sie mit dem Schreiben fertig sind.

Wenn Sie Java 7 oder höher verwenden, können Sie die Anweisung " try-with-resources " verwenden, mit der Sie automatisch geschlossen werden, PrintStreamwenn Sie damit fertig sind (dh den Block verlassen).

try (PrintWriter out = new PrintWriter("filename.txt")) {
    out.println(text);
}

Sie müssen das java.io.FileNotFoundExceptionwie zuvor noch explizit werfen .

Jeremy Smyth
quelle
4
@ Justin, Sie können auch einen absoluten Pfad (z. B. "/tmp/filename.txt") an den FileOutputStream-Konstruktor übergeben, um die Datei an einem beliebigen Ort zu speichern
Jonik
7
Übrigens könnte dies mit den Komfortkonstruktoren vereinfacht werden, die PrintStream seit 1.5 hat. Dies würde ausreichen: PrintStream out = neuer PrintStream ("filename.txt");
Jonik
10
Müssen Sie diese Datei aber irgendwann schließen ...? codecodex.com/wiki/ASCII_file_save#Java
JStrahl
2
Sie möchten try {} catch () {} finally {} verwenden, wobei Sie in finally {} die Datei schließen, wenn sie nicht null ist.
Benas
23
In Java8 können Sie versuchen (PrintStream ps = neuer PrintStream ("Dateiname")) {ps.println (out); } Dies wird für Sie eng
erledigt
245

Apache Commons IO enthält einige großartige Methoden, insbesondere FileUtils enthält die folgende Methode:

static void writeStringToFile(File file, String data) 

Damit können Sie in einem Methodenaufruf Text in eine Datei schreiben:

FileUtils.writeStringToFile(new File("test.txt"), "Hello File");

Möglicherweise möchten Sie auch die Codierung für die Datei angeben.

Jon
quelle
10
Nur eine kleine Korrektur, das zweite Fragment sollte lauten: FileUtils.writeStringToFile (neue Datei ("test.txt"), "Hello File");
pm_labs
3
Für diejenigen von uns, die Guave bevorzugen, kann es dies auch tun .
Jonik
10
Die Funktion ist jetzt veraltet, Sie sollten den Standardzeichensatz hinzufügen ->FileUtils.writeStringToFile(new File("test.txt"), "Hello File", forName("UTF-8"));
Paul Fournel
97

Schauen Sie sich die Java File API an

ein kurzes Beispiel:

try (PrintStream out = new PrintStream(new FileOutputStream("filename.txt"))) {
    out.print(text);
}
Jorn
quelle
@ XP1 Ich weiß, das ist eine große Verbesserung. Ich habe Lombok dafür in Java 6 verwendet: Gehen @Cleanup new FileOutputStream(...)Sie einfach und Sie sind fertig.
Jorn
6
Vergiss nicht, out.flush () aufzurufen; dann out.close ();
Alex Byrth
@AlexByrth warum sollte er?
Andrew Tobilko
1
Große Dateien werden im Hintergrund (ein anderer Thread) aufgezeichnet und benötigen Zeit zum Aufzeichnen. Durch Aufrufen von flush () wird sichergestellt, dass alles in die nächste Zeile geschrieben wurde, wodurch der Vorgang synchronisiert wird. Dies ist jedoch optional , aber eine gute Vorgehensweise, wenn Sie große Dateien als Protokolle verarbeiten.
Alex Byrth
1
Beachten Sie, dass out.close () den Stream bereits löscht, was bedeutet, dass out.flush () nicht aufgerufen werden muss.
hjk321
90

In Java 7 können Sie dies tun:

String content = "Hello File!";
String path = "C:/a.txt";
Files.write( Paths.get(path), content.getBytes());

Weitere Informationen finden Sie hier: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403

Daniil Shevelev
quelle
3
Für den Fall, dass sich später jemand wunderte, wäre die Codierung der Plattformstandard.
Haakon Løtveit
5
content.getBytes(StandardCharsets.UTF_8)kann verwendet werden, um die Codierung explizit zu definieren.
John29
1
Beachten Sie, dass StandardOpenOption.CREATE nicht die Standardeinstellung ist. StandardOpenOption.CREATE und StandardOpenOption.TRUNCATE_EXISTING sind die Standardeinstellungen. Um die Standardeinstellung zu verwenden, entfernen Sie einfach den dritten Parameter.
Tinus Tate
Bitte beachten Sie den Kommentar von Tinus Tate! Wie wird dieses Beispiel bearbeitet? Ich frage mich, wie viele Tausend Menschen dieses Beispiel unverändert genommen haben, nur um festzustellen, dass sie unerwartete Ergebnisse erzielen, wenn sie eine Datei mit einer kürzeren Zeichenfolge überschreiben. Wie Tinus angibt, ist TRUNCATE_EXISTING von entscheidender Bedeutung, es sei denn, Sie verstehen und haben einen tatsächlichen Grund dafür, dass Sie die vorhandene Datei beim Überschreiben mit einer kürzeren Zeichenfolge nicht abschneiden möchten.
8.
1
In Java 11 können Sie einfach einen String als zweiten Parameter einfügen! Hurra!
Dennis Glot
78

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 .

BufferedWriter writer = null;
try
{
    writer = new BufferedWriter( new FileWriter( yourfilename));
    writer.write( yourstring);

}
catch ( IOException e)
{
}
finally
{
    try
    {
        if ( writer != null)
        writer.close( );
    }
    catch ( IOException e)
    {
    }
}
Artem Barger
quelle
4
Entfernen aller Versuche / Fänge und Vereinfachung Ich kann es auch in einer Zeile tun, indem ich einfach Folgendes mache: (neuer BufferedWriter (neuer FileWriter (Dateiname))). Write (str);
Artem Barger
6
Zeigen Sie also Ihre einfache und schöne Lösung. Ich würde mich freuen zu lernen, wie man es besser macht.
Artem Barger
4
Ignoriere die Trolle ... sie kritisieren immer, ohne ihre eigene Lösung anzubieten. Vielen Dank, dass Sie mich
davor bewahrt haben
1
Es scheint, dass .close()das nicht wirft (zumindest in Java 7?), Ist der letzte Trycatch vielleicht überflüssig?
Kos
16
Das Verschlucken solcher Ausnahmen wird Ihnen das Leben schwer machen, wenn tatsächlich Ausnahmen auftreten. Zumindest sollten Sie sie erneut werfen:throw new RuntimeException(e);
Roger Keays
65

Verwendung FileUtils.writeStringToFile()von Apache Commons IO . Dieses spezielle Rad muss nicht neu erfunden werden.

Skaffman
quelle
20
Ich konnte nicht mehr widersprechen. Diese Bibliotheken sind vorhanden, sodass wir in einer so einfachen Lösung keine subtilen Fehler einführen.
Skaffman
3
Nein, offensichtlich nicht. Ich bin nur anderer Meinung, dass Ihre Lösung möglicherweise nicht das erste ist, was ich auf jemanden werfen würde, der ein Anfänger-Java-Programmierer ist. Sie schlagen nicht vor, dass Sie so etwas noch nie geschrieben haben, oder?
Duffymo
8
Ich habe, ja, aber das ist, bevor ich Commons-Io gefunden habe. Seitdem ich das gefunden habe, habe ich so etwas noch nie von Hand geschrieben, auch nicht in einem Ein-Klassen-Projekt. Wenn ich vom ersten Tag an davon gewusst hätte, hätte ich es vom ersten Tag an benutzt.
Skaffman
5
Genau, aber Sie sind ein erfahrener Entwickler. Ihre Biografie sagt, dass Sie ein JBOSS / Spring-Benutzer sind, aber sicherlich hätten Sie bei Ihrer ersten "Hello, World" -Anstrengung keinen von beiden erreicht. Ich bin nicht anderer Meinung als die ordnungsgemäße Verwendung von Bibliotheken. Ich sage, dass Leute, die zum ersten Mal eine Sprache versuchen, versuchen sollten, sie am Ende zu kennen, auch wenn dies bedeutet, Dinge zu tun, die sie später verwerfen, wenn sie erfahren sind und es besser wissen.
Duffymo
2
Ich habe dies ohne Commons implementiert und eine weniger als offensichtliche Ausnahme ausgelöst. Ich habe dies dann mit Commons implementiert und es hat mir genau gesagt, was falsch war. Moral der Geschichte: Warum im dunklen Zeitalter leben, wenn Sie nicht müssen?
SilentNot
22

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

import java.io.*;

public class Main {

    public static void main(String[] args) {

        try {
            String str = "SomeMoreTextIsHere";
            File newTextFile = new File("C:/thetextfile.txt");

            FileWriter fw = new FileWriter(newTextFile);
            fw.write(str);
            fw.close();

        } catch (IOException iox) {
            //do stuff with exception
            iox.printStackTrace();
        }
    }
}
Adam Wagner
quelle
2
Dadurch wird die Datei im Falle einer Ausnahme nicht geschlossen.
Tom Hawtin - Tackline
1
@JanusTroelsen: Wenn abgelehnt, zitieren Sie die Try-with-Resources-Anweisung .
Trashgod
22

In Java 11 wurde die java.nio.file.FilesKlasse 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 :

Files.writeString(Path.of("my", "path"), "My String");

Mit der zweiten Methode (siehe JavaDoc hier ) können Sie einen einzelnen Zeichensatz angeben:

Files.writeString(Path.of("my", "path"), "My String", StandardCharset.ISO_8859_1);

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:

Files.writeString(Path.of("my", "path"), "String to append", StandardOpenOption.CREATE, StandardOpenOption.APPEND);
Marcel
quelle
13

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 :

// This is where the file goes.
File destination = new File("file.txt");
// This line isn't needed, but is really useful 
// if you're a beginner and don't know where your file is going to end up.
System.out.println(destination.getAbsolutePath());
try {
    Files.write(text, destination, Charset.forName("UTF-8"));
} catch (IOException e) {
    // Useful error handling here
}
Spina
quelle
2
Wenn Sie Guava verwenden, gibt es auch Charsets.UTF-8.
Florian
2
@ Florian: Es ist Charsets.UTF_8eigentlich
Tim Büthe
Der übergeordnete Ordner muss vorhanden sein. Beispiel: destination.mkdirs ().
AlikElzin-Kilaka
2
Files.write (CharSequence from, File to, Charset charset) ist in Guava 26.0 veraltet.
Donald Duck
Moderne Guave-Alternative zu veralteten Files.write: Files.asCharSink(file, charset).write(text)
Vadzim
12

Verwenden Sie die Apache Commons IO-API. Es ist einfach

Verwenden Sie API als

 FileUtils.writeStringToFile(new File("FileNameToWrite.txt"), "stringToWrite");

Maven-Abhängigkeit

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>
Anirban Chakrabarti
quelle
12

Falls Sie eine Textdatei erstellen müssen, die auf einer einzelnen Zeichenfolge basiert:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class StringWriteSample {
    public static void main(String[] args) {
        String text = "This is text to be saved in file";

        try {
            Files.write(Paths.get("my-file.txt"), text.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Pavel_H
quelle
Files.write (Pfad, Byte []) verwendet die UTF-8-Codierung. String.getBytes () verwendet die Standardplattformcodierung. Das ist also ein potenzielles Problem. Verwenden Sie string.getBytes (StandardCharsets.UTF_8)!
Müller
11

Verwenden Sie dies, es ist sehr gut lesbar:

import java.nio.file.Files;
import java.nio.file.Paths;

Files.write(Paths.get(path), lines.getBytes(), StandardOpenOption.WRITE);
Ran Adler
quelle
Es ist auch eine Kopie einer vorhandenen Antwort. : c
james.garriss
2
Entschuldigung, aber ich habe Java8 nicht erfunden. Ich bin nicht der einzige, der diese Zeile verwendet. aber es ist keine Kopie von anderen Antworten auf die gleiche Frage vorbei
Ran Adler
10
import java.io.*;

private void stringToFile( String text, String fileName )
 {
 try
 {
    File file = new File( fileName );

    // if file doesnt exists, then create it 
    if ( ! file.exists( ) )
    {
        file.createNewFile( );
    }

    FileWriter fw = new FileWriter( file.getAbsoluteFile( ) );
    BufferedWriter bw = new BufferedWriter( fw );
    bw.write( text );
    bw.close( );
    //System.out.println("Done writing to " + fileName); //For testing 
 }
 catch( IOException e )
 {
 System.out.println("Error: " + e);
 e.printStackTrace( );
 }
} //End method stringToFile

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.

Sean H. Worthington
quelle
10

Sie könnten dies tun:

import java.io.*;
import java.util.*;

class WriteText
{
    public static void main(String[] args)
    {   
        try {
            String text = "Your sample content to save in a text file.";
            BufferedWriter out = new BufferedWriter(new FileWriter("sample.txt"));
            out.write(text);
            out.close();
        }
        catch (IOException e)
        {
            System.out.println("Exception ");       
        }

        return ;
    }
};
Mostafa Rezaei
quelle
10

Verwenden von Java 7:

public static void writeToFile(String text, String targetFilePath) throws IOException
{
    Path targetPath = Paths.get(targetFilePath);
    byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
    Files.write(targetPath, bytes, StandardOpenOption.CREATE);
}
BullyWiiPlaza
quelle
Ein weises Wort - dies erstellt eine neue Datei, wenn sie nicht vorhanden ist, überschreibt jedoch die Zeichen der vorhandenen Datei, wenn dies der Fall ist. Wenn die neuen Daten kleiner sind, bedeutet dies, dass Sie wahrscheinlich eine beschädigte Datei erstellen. Frag mich, woher ich das weiß!
Chris Rae
Ok, woher weißt du das?
Ojblass
Verwenden Sie Files.write(targetPath, bytes);dann einfach, um die Datei zu überschreiben. Es wird wie erwartet funktionieren.
BullyWiiPlaza
8

Verwenden von org.apache.commons.io.FileUtils:

FileUtils.writeStringToFile(new File("log.txt"), "my string", Charset.defaultCharset());
GoYun.Info
quelle
6

Wenn Sie nur einen Textblock in eine Datei verschieben möchten, wird dieser jedes Mal überschrieben.

JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
    FileOutputStream stream = null;
    PrintStream out = null;
    try {
        File file = chooser.getSelectedFile();
        stream = new FileOutputStream(file); 
        String text = "Your String goes here";
        out = new PrintStream(stream);
        out.print(text);                  //This will overwrite existing contents

    } catch (Exception ex) {
        //do something
    } finally {
        try {
            if(stream!=null) stream.close();
            if(out!=null) out.close();
        } catch (Exception ex) {
            //do something
        }
    }
}

In diesem Beispiel kann der Benutzer eine Datei mit einer Dateiauswahl auswählen.

Bhathiya-Perera
quelle
@ Eric Leschinski: Danke, dass Sie meine Antwort professioneller gemacht haben (ich nahm auch an, dass dies genau das war, was das OP wollte, da dies eigentlich das ist, was die meisten Leute wollen,
werfen
2
Sobald die ursprüngliche Frage beantwortet wurde und das OP zufrieden und längst vorbei ist, dienen Seiten wie diese nur als nützliches Artefakt für Personen, die über eine Google-Suche hier landen. Ich bin auf dieser Seite gelandet, um einen Mini-Text-Appender für eine Datei zu erstellen. Es ist also gut, mit dem gesamten Publikum zu sprechen und nicht mit dem OP, nachdem das OP weitergezogen ist.
Eric Leschinski
3

Es ist besser, den Writer / Outputstream in einem finally-Block zu schließen, falls etwas passiert

finally{
   if(writer != null){
     try{
        writer.flush();
        writer.close();
     }
     catch(IOException ioe){
         ioe.printStackTrace();
     }
   }
}

quelle
1
Noch besser: Verwenden Sie Try-with-Resources
Janus Troelsen
Ja, @JanusTroelsen ist richtig, besser nutzen Die Try-with-Resources-Anweisung docs.oracle.com/javase/tutorial/essential/exceptions/…
2
private static void generateFile(String stringToWrite, String outputFile) {
try {       
    FileWriter writer = new FileWriter(outputFile);
    writer.append(stringToWrite);
    writer.flush();
    writer.close();
    log.debug("New File is generated ==>"+outputFile);
} catch (Exception exp) {
    log.error("Exception in generateFile ", exp);
}

}}

Jobin Mathew
quelle
1
Während dieses Code-Snippet die Lösung sein kann, hilft das Hinzufügen einer Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
Johan
close () darf niemals aufgerufen werden. Bitte verbessern Sie Ihre Antwort, indem Sie die richtige Behandlung von Fehlerfällen hinzufügen.
Boris Brodski
0

Ich denke, der beste Weg ist Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options):

String text = "content";
Path path = Paths.get("path", "to", "file");
Files.write(path, Arrays.asList(text));

Siehe javadoc :

Schreiben Sie Textzeilen in eine Datei. Jede Zeile ist eine Zeichenfolge und wird nacheinander in die Datei geschrieben, wobei jede Zeile durch das Zeilentrennzeichen der Plattform abgeschlossen wird, wie durch die Systemeigenschaft line.separator definiert. Zeichen werden mit dem angegebenen Zeichensatz in Bytes codiert.

Der Parameter options gibt an, wie die Datei erstellt oder geöffnet wird. Wenn keine Optionen vorhanden sind, funktioniert diese Methode so, als ob die Optionen CREATE, TRUNCATE_EXISTING und WRITE vorhanden wären. Mit anderen Worten, es öffnet die Datei zum Schreiben, erstellt die Datei, falls sie nicht vorhanden ist, oder schneidet eine vorhandene reguläre Datei zunächst auf eine Größe von 0 ab. Die Methode stellt sicher, dass die Datei geschlossen wird, wenn alle Zeilen geschrieben wurden ( oder ein E / A-Fehler oder eine andere Laufzeitausnahme wird ausgelöst). Wenn ein E / A-Fehler auftritt, kann dies geschehen, nachdem die Datei erstellt oder abgeschnitten wurde oder nachdem einige Bytes in die Datei geschrieben wurden.

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 eines byte[]Arrays eine Iterable of CharSequence (dh String) verwendet und daher text.getBytes()nicht erforderlich ist , was meiner Meinung nach etwas sauberer ist.

alb-i986
quelle
0

Wenn Sie die Wagenrücklaufzeichen aus der Zeichenfolge in einer Datei behalten möchten, finden Sie hier ein Codebeispiel:

    jLabel1 = new JLabel("Enter SQL Statements or SQL Commands:");
    orderButton = new JButton("Execute");
    textArea = new JTextArea();
    ...


    // String captured from JTextArea()
    orderButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            // When Execute button is pressed
            String tempQuery = textArea.getText();
            tempQuery = tempQuery.replaceAll("\n", "\r\n");
            try (PrintStream out = new PrintStream(new FileOutputStream("C:/Temp/tempQuery.sql"))) {
                out.print(tempQuery);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(tempQuery);
        }

    });
QS-Spezialist
quelle
-1

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.

public boolean writeStringToFile(File file, String string, Charset charset) {
    if (file == null) return false;
    if (string == null) return false;
    return writeBytesToFile(file, string.getBytes((charset == null) ? DEFAULT_CHARSET:charset));
}

public boolean writeBytesToFile(File file, byte[] data) {
    if (file == null) return false;
    if (data == null) return false;
    FileOutputStream fos;
    BufferedOutputStream bos;
    try {
        fos = new FileOutputStream(file);
        bos = new BufferedOutputStream(fos);
        bos.write(data, 0, data.length);
        bos.flush();
        bos.close();
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
        Logger.e("!!! IOException");
        return false;
    }
    return true;
}
牟家宏
quelle
1
Bitte fügen Sie die richtige Fehlerbehandlung hinzu, indem Sie alle geöffneten Ressourcen schließen und Ausnahmen vorschlagen
Boris Brodski,
Würde es Ihnen etwas ausmachen, Fälle zur Code-Behandlung zu teilen, wie Sie es empfohlen haben? Vielen Dank.
5.
-1

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.


private void SaveActionPerformed(java.awt.event.ActionEvent evt) {

    String NameFile = Name.getText();
    ArrayList< String > Text = new ArrayList< String >();

    Text.add(TextArea.getText());

    SaveFile(NameFile, Text);
}

public void SaveFile(String name, ArrayList< String> message) {

    path = "C:\\Users\\Paulo Brito\\Desktop\\" + name + ".txt";

    File file1 = new File(path);

    try {

        if (!file1.exists()) {

            file1.createNewFile();
        }


        File[] files = file1.listFiles();


        FileWriter fw = new FileWriter(file1, true);

        BufferedWriter bw = new BufferedWriter(fw);

        for (int i = 0; i < message.size(); i++) {

            bw.write(message.get(i));
            bw.newLine();
        }

        bw.close();
        fw.close();

        FileReader fr = new FileReader(file1);

        BufferedReader br = new BufferedReader(fr);

        fw = new FileWriter(file1, true);

        bw = new BufferedWriter(fw);

        while (br.ready()) {

            String line = br.readLine();

            System.out.println(line);

            bw.write(line);
            bw.newLine();

        }
        br.close();
        fr.close();

    } catch (IOException ex) {
        ex.printStackTrace();
        JOptionPane.showMessageDialog(null, "Error in" + ex);     
    }   
}
Paulo Brito
quelle
Sie können eine Reihe von Ressourcen geöffnet lassen. Dies ist eine schlechte Praxis, bitte tun Sie dies nicht.
Boris Brodski