1

TextArea にテキストがあり、それをファイルに保存したいのですが、コードは次のとおりです。

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

}

ただし、「\ n」なしで保存します。新しいファイルでは、すべてが 1 行に表示されます。それらの「入る」ことも予測できますか?前もって感謝します

問題はメモ帳が原因だったので、ここに解決策があります:

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

}

助けてくれてありがとう

4

5 に答える 5

3

動作するはずです。行末の\rと\nを表示するテキストエディタを使用して、何が表示されるかを確認してください。

テキストファイルをメモ帳などのWindowsユーティリティで開くことができることを確認したい場合は、次の\r\nように自分で正規化する必要があります。

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

これにより、先頭にシーケンス\nが付いていないすべての人が置き換えられます。\r\r\n

于 2013-03-18T17:56:28.680 に答える
2

Swing テキスト コンポーネントが提供する read() および write() メソッドを使用する必要があります。詳細については、テキストと改行を参照してください。

出力に特定の EOL 文字列を含める場合は、テキスト コンポーネントの Document を作成した後、次を使用する必要があります。

textComponent.getDocument().putProperty(DefaultEditorKit.EndOfLineStringProperty, "\r\n");
于 2013-03-18T18:38:25.650 に答える
0

を使用しPrintWriterて、ファイルに改行を印刷できます。TextAreaのテキストをスキャンするときに、TextAreaのテキストに「\\ n」が含まれている場合は、PrintWriterのprintln()メソッドを使用します。それ以外の場合は、単にprint()を使用します。

于 2013-03-18T17:55:07.280 に答える
0

\n は改行を作成すると言うように、\ 文字は次の文字をエスケープします。実際の \ を出力したい場合は、次のように書く必要があります:

"\n"

于 2013-03-18T17:51:28.363 に答える
0

TextArea のコンテンツを文字列で持っています。改行で分割すると、String[] が得られます。次に、String[] 配列を反復してファイルに書き込むことができます。

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

    }
于 2013-03-18T18:00:58.210 に答える