JavaFX:如何禁用TextArea的多行选项
我有一个从csv文件读写的应用程序。我的程序中有一个文本区,但当我键入一些多行文本时,csv文件会被破坏,应用程序无法启动,因为它无法从中读取 这是我用来保存和加载的JavaFX:如何禁用TextArea的多行选项,java,csv,javafx,Java,Csv,Javafx,我有一个从csv文件读写的应用程序。我的程序中有一个文本区,但当我键入一些多行文本时,csv文件会被破坏,应用程序无法启动,因为它无法从中读取 这是我用来保存和加载的 public void save() throws IOException { try (BufferedWriter bw = new BufferedWriter(new FileWriter(path))) { for (Tasks o : (getTasks())) { bw
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文件的外观:
您应该在保存之前转义新行字符,因为它们会破坏您的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,例如。或者,您可以将您的任务保存为另一种文本格式,如json或xml。您可以共享一个吗?以下是整个repo:不幸的是,我不知道应该给出什么作为示例:一个简单的代码片段,显示您的问题,每个人都可以简单地用它重现。非常感谢。最近我只使用json,老实说,我不知道这次为什么要尝试csv。而且由于构造函数中的这一点,无法出现在标题中,但它不是您提到的iftask.contains的最佳解决方案;抛出新的IllegalArgumentException@VratislavHolub JSON和XML用于层次结构或任意结构的数据,但并非所有实例中的字段都相同。相反,和格式用于数据、简单的列和行。