gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:09:44 25 4
gpt4 key购买 nike

我有一个可以写入和读取 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();
}

它应该是什么样子:

How it should look

csv 文件的外观:

how csv file looks

最佳答案

您应该在保存之前转义新行字符,因为它们会破坏您的 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();
}

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

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

关于JavaFX:如何禁用 TextArea 的多行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com