Настоятельно рекомендуется использовать метод java.nio.file.Files#delete(Path)
вместо File#delete
.Прочитайте соответствующий вопрос .Кроме того, вам не нужно удалять файл и записывать в темп.Просто прочитайте текст, отфильтруйте его, как хотите, и, наконец, переписайте тот же файл с нуля.(Конечно, запись должна быть закрыта первой.)
Взгляните на этот пример:
public class ReadWrite {
public static void main(String[] args) {
File desktop = new File(System.getProperty("user.home"), "Desktop");
File txtFile = new File(desktop, "hello.txt");
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(txtFile))) {
String line;
while ((line = br.readLine()) != null) {
if ("this should not be read".equals(line))
continue;
sb.append(line);
sb.append(System.lineSeparator());
}
} catch (IOException e) {
System.err.println("Error reading file.");
e.printStackTrace();
}
try (PrintWriter out = new PrintWriter(txtFile)) {
out.write(sb.toString());
} catch (IOException e) {
System.err.println("Error writing to file.");
e.printStackTrace();
}
}
}
Начальное содержимое hello.txt:
hello there
stackoverflow
this should not be read
but what if it does?
then my answer
is going to get downvotes
После запуска:
hello there
stackoverflow
but what if it does?
then my answer
is going to get downvotes
PS : Если вы работаете в Java 8+, взгляните на ресурсы для попытки и AutoClosable.