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。
添加回答
舉報