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

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

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

慕田峪4524236 2022-07-27 09:26:47
我有一个从 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贡献1830条经验 获得超9个赞

正如您已经提到的,您应该在保存之前转义新行字符,因为它们会破坏您的 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-07-27
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号