У меня есть файл .txt, inventory.txt
. он содержит
banana, 1, 15
dog, 1, 15
cats, 20, 30
Я хотел бы создать метод, который удалял бы одну из этих строк, скажем, строку cats
, путем ввода cats
или cats, 20, 30
Мой код запрашивает у пользователя removedItem
, читает inventory.txt
, обрезает каждую строку и проверяет, равен ли trimmedLine
removedItem
, затем continue
и записывает в deleteditems.txt
каждое чтение line
, исключая trimmedLine
. Затем я закрываю writer
и reader
, удаляю оригинал inventory.txt
и переименовываю deleteditems.txt
в inventory.txt
. Однако он ничего не делает, и строка остается после компиляции.
Код:
public void removeItems() throws IOException {
String line;
File inventory = new File("src/inventory.txt");
File temp = new File("src/deleteditems.txt");
BufferedReader reader = new BufferedReader(new FileReader("src/inventory.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("src/deleteditems.txt"));
displayInventory();
temp.createNewFile();
System.out.println("what item do you want to remove");
String removedLine = scan.next();
while((line = reader.readLine()) != null) {
String trimmedLine = line.trim();
if(trimmedLine.equals(removedLine)) {
trimmedLine = "";
}
writer.write(line + System.getProperty("line.separator"));
}
reader.close();
writer.close();
inventory.delete();
temp.renameTo(inventory);
}
Вывод:
banana, 1, 15
dog, 1, 15
cats, 20, 30
what item do you want to remove
cats, 20, 30
Текстовый файл после компиляции:
banana, 1, 15
dog, 1, 15
cats, 20, 30