java exemple JTextArea txt; txt.getText() ignore "\ n"



jfilechooser java exemple (4)

J'ai du texte dans TextArea, et je veux l'enregistrer dans un fichier, mon code est ici:

private void SaveFile() {
    try {

        String content = txt.getText();

        File file = new File(filename);

        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(content);
        bw.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

mais il sauve sans "\ n"; et dans un nouveau fichier tout est sur une ligne; comment puis-je prévoir que ces "entre" aussi? Merci d'avance

le problème était à cause du bloc-notes, alors voici la solution:

private void SaveFile() {
    try {

        String content = txt.getText();
        content = content.replaceAll("(?!\\r)\\n", "\r\n");

        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(content);
        bw.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

Merci pour ton aide


Answer #1

Ça devrait marcher. Essayez d'utiliser un éditeur de texte qui affiche les fins de ligne \ r et \ n et voyez ce qui arrive.

Si vous voulez être sûr que le fichier texte peut être ouvert par des utilitaires Windows comme Notepad qui ne comprennent que \r\n , vous devez le normaliser de cette façon:

content = content.replaceAll("(?!\\r)\\n", "\r\n");

Ceci remplacera tout \n qui n'est pas précédé d'un \r par la séquence \r\n .


Answer #2

Vous avez le contenu de votre TextArea dans une chaîne. Maintenant, vous pouvez le diviser à la nouvelle ligne, alors vous obtiendrez votre chaîne []. Ensuite, vous pouvez parcourir le tableau String [] et l'écrire dans votre fichier:

private void SaveFile() {
        try {
            String content = txt.getText();
            File file = new File(filename);
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            for (String line : content.split("\\n")) {
                bw.write(content);
            }

            bw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

Answer #3

Vous pouvez utiliser un PrintWriter pour imprimer une nouvelle ligne dans un fichier. En scannant le texte de TextArea si le texte de TextArea contient "\\ n", alors utilisez la méthode println () de PrintWriter sinon usez simplement print ()!


Answer #4

Le caractère \ échappe au caractère suivant, comme vous le dites \ n va créer un saut de ligne. Si vous souhaitez sortir un \ réel, vous devez écrire:

"\ n"





io