使用换行符将javafx textarea写入文本文件

使用换行符将javafx textarea写入文本文件,java,javafx,text-files,formatter,Java,Javafx,Text Files,Formatter,因此,我目前正在尝试使用formatter类将JavaFXTextArea的内容保存到文本文件中。问题是文本只保存在一行中,没有任何换行符 这是我用来写入文本文件的代码 File file = new File(link); Formatter formatter = null; try { formatter = new Formatter(file);

因此,我目前正在尝试使用formatter类将JavaFXTextArea的内容保存到文本文件中。问题是文本只保存在一行中,没有任何换行符

这是我用来写入文本文件的代码

 File file = new File(link);
                    Formatter formatter = null;
                    try {
                        formatter = new  Formatter(file);
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    formatter.format(textArea.getText() + "\n");
编辑:
我发现了问题:这是Windows记事本的故障。当我在其他文本编辑器(如notepadd++)中打开txt文件时,它工作正常

您真的需要使用
格式化程序
类吗?我假设该类(仅)为format参数内容中的
%n
占位符(但似乎忽略换行符)生成行分隔符(另请参见相应的):

一种解决方案可能是将格式字符串指定为
“%s%n”
(表示要格式化字符串,后跟换行符)并传递TextArea的内容,例如
formatter.format(“%s%n”,TextArea.getText())
,如果您确实需要使用格式化程序

否则,您也可以通过一些编写器直接将textArea的内容输出到文件:

FileWriter w = new FileWriter(file);
w.write(textArea.getText());
w.close();

您真的需要使用
格式化程序
类吗?我假设该类(仅)为format参数内容中的
%n
占位符(但似乎忽略换行符)生成行分隔符(另请参见相应的):

一种解决方案可能是将格式字符串指定为
“%s%n”
(表示要格式化字符串,后跟换行符)并传递TextArea的内容,例如
formatter.format(“%s%n”,TextArea.getText())
,如果您确实需要使用格式化程序

否则,您也可以通过一些编写器直接将textArea的内容输出到文件:

FileWriter w = new FileWriter(file);
w.write(textArea.getText());
w.close();

您必须关闭格式化程序

formatter.close();
格式化程序输出首先缓冲在内存中。因此,一旦完成,就必须关闭格式化程序

为此使用finally块

    try {
        //code
    } catch{
     //code
    }
    finally {
        formatter.close();
    }

您必须关闭格式化程序

formatter.close();
格式化程序输出首先缓冲在内存中。因此,一旦完成,就必须关闭格式化程序

为此使用finally块

    try {
        //code
    } catch{
     //code
    }
    finally {
        formatter.close();
    }

在我的项目中,我将
TextArea
的内容编写如下:

byte[] contents = area.getText().getBytes(StandardCharsets.UTF_8);
Files.createDirectories(path.getParent());
Files.write(path, contents, StandardOpenOption.CREATE);

将内容保存为UTF-8编码的文本文件。这包括
\n
。考虑到我在Linux上工作,我没有检查它是否真的是
\n\r
,我的直觉告诉我它只是
\n

在我的项目中,我将
文本区域的内容写如下:

byte[] contents = area.getText().getBytes(StandardCharsets.UTF_8);
Files.createDirectories(path.getParent());
Files.write(path, contents, StandardOpenOption.CREATE);

将内容保存为UTF-8编码的文本文件。这包括
\n
。考虑到我在Linux上工作,我没有检查它是否真的是
\n\r
,我的直觉告诉我它只是
\n

我关闭了它,但我忘了在帖子中写,对不起!这里工作很好。你能更新代码包括文本区是什么吗?我关闭了它,但我忘了在帖子里写,对不起!这里工作很好。你能更新代码,包括文本区域是什么吗?我尝试了你的第二个想法,但它没有再次保存换行符。我尝试了你的第二个想法,但它没有再次保存换行符