我有一個(gè)從文本文件中添加、搜索和刪除行的功能。搜索與大小寫無關(guān),并且有一個(gè) .contains 允許它在少于整行的情況下工作。刪除功能只刪除完全匹配。我正在訪問一個(gè)外部 .txt 文件,該文件保存所做的更改。我嘗試復(fù)制我的搜索代碼,但無法產(chǎn)生相同的結(jié)果。我還想完全刪除該行,以便在我不刪除最后一個(gè)條目時(shí)讓我的表格保持干凈,但這不太重要。 System.out.println("What would you like to delete"); Scanner deleteScanner = new Scanner(System.in); String deleteInput = deleteScanner.nextLine(); try{ File file = new File("contacts.txt"); File temp = File.createTempFile("file", ".txt", file.getParentFile()); BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp))); for (String line; (line = reader.readLine()) != null;) { line = line.replace(deleteInput, ""); writer.println(line); } reader.close(); writer.close(); file.delete(); temp.renameTo(file); } catch (IOException e){ e.printStackTrace(); }我覺得 .contains 應(yīng)該可以工作,但我無法使其按預(yù)期運(yùn)行。
1 回答

鴻蒙傳說
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用以下方法更輕松地獲取所有文件行:
List<String> lines = Files.readAllLines(Paths.get(path), Charset.defaultCharset());
之后,您可以簡單地遍歷列表lines并刪除整行,如果它包含deleteInput:
for (String line : lines) {
if (line.contains(deleteInput)) {
lines.remove(line);
}
}
如果需要toLowerCase()在每次檢查之前找到可以忽略占用的案例。
添加回答
舉報(bào)
0/150
提交
取消