为了账号安全,请及时绑定邮箱和手机立即绑定

JavaFX:如何禁用TextArea的多行选项

JavaFX:如何禁用TextArea的多行选项

侃侃尔雅 2022-08-03 12:39:41
我有一个从csv文件写入和读取的应用程序。我的程序中有一个TextArea,但是当我键入一些多行文本时,csv文件被破坏,然后应用程序无法启动,因为它无法从中读取。以下是我用于保存和加载的内容。public void save() throws IOException {    try (BufferedWriter bw = new BufferedWriter(new FileWriter(path))) {        for (Tasks o : (getTasks())) {            bw.write(o.getTask() + ";" +                    o.getDeadline().toString() + ";" +                    o.getDescription());            bw.newLine();        }    }}public void load() throws IOException, ParseException {    File file = new File(path);    if (file.exists()) {        try (BufferedReader br = new BufferedReader(new FileReader(path))) {            List<Tasks> tempTasks = new ArrayList<>();            String line;            while ((line = br.readLine()) != null) {                String[] parts = line.split(";");                String task = parts[0];                LocalDate deadline = LocalDate.parse(parts[1]);                String desc = parts[2];                tempTasks.add(new Tasks(task, deadline, desc));            }            tasks.clear();            tasks.addAll(tempTasks);        }    } else        tasks.clear();}它应该是什么样子:csv 文件的外观:
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

您应该在保存之前转义新的行字符,因为它们会破坏您的csv文件,正如您已经提到的。


您可以使用在保存时转义,并在加载时取消逃逸。description.replace("\n", "\\n")description.replace("\\n", "\n")


public void save() throws IOException {

    try (BufferedWriter bw = new BufferedWriter(new FileWriter(path))) {

        for (Tasks o : (getTasks())) {

            bw.write(o.getTask() + ";" +

                    o.getDeadline().toString() + ";" +

                    o.getDescription().replace("\n", "\\n"));

            bw.newLine();

        }

    }

}


public void load() throws IOException, ParseException {

    File file = new File(path);

    if (file.exists()) {

        try (BufferedReader br = new BufferedReader(new FileReader(path))) {

            List<Tasks> tempTasks = new ArrayList<>();

            String line;

            while ((line = br.readLine()) != null) {

                String[] parts = line.split(";");

                String task = parts[0];

                LocalDate deadline = LocalDate.parse(parts[1]);

                String desc = parts[2].replace("\\n", "\n");

                tempTasks.add(new Tasks(task, deadline, desc));

            }

            tasks.clear();

            tasks.addAll(tempTasks);

        }

    } else

        tasks.clear();

}

但是在你的标题或描述中使用a也会搞砸你的csv。;


我建议使用外部库进行csv处理,例如Apache Commons CSV。或者,您可以将任务保存为其他文本格式,如 json 或 xml。


查看完整回答
反对 回复 2022-08-03
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信