Я пытаюсь понять, почему мой inputFile.delete () не удаляет файл.
Это потому, что старый файловый API дрянный именно в этом смысле: у него нет способность сказать вам, почему что-то не получается. Все, что он может сделать, это вернуть false, что он и сделает.
См. Другой ответ от @deHaar, в котором показано, как это сделать с новым API. Помимо более чистого кода и более нового API, предоставляющего вам больше возможностей, новый API также решает эту проблему, когда различные методы, такие как File.delete()
, не могут сказать вам причину, по которой он не может делать то, что вы просите.
Есть много-много проблем с вашим кодом, поэтому я настоятельно рекомендую go попробовать deHaar. А именно:
- Вы неправильно закрываете свои ресурсы; если произойдет исключение, ваши обработчики файлов останутся открытыми.
- И чтение, и запись здесь выполняются с «кодировкой по умолчанию для платформы», какой бы она ни была. По сути, никогда не используйте конструкторы
FileReader
и FileWriter
. К счастью, новый API по умолчанию использует UTF_8, если вы не можете указать кодировку, что более разумно. - ваша обработка исключений не очень хороша (вы отбрасываете все полезные сообщения, что бы ни могло делать здесь) - и вы все равно пытаетесь удалить и заменить, даже если возникают исключения, которые затем терпят неудачу, поскольку ваши дескрипторы файлов все еще открыты.
- Метод должен называться getIdByUsername
- Ваша строка toRemove каждый раз одна и та же, или, по крайней мере, переменная
username
, похоже, не обновляется, когда вы l oop через. Если он действительно никогда не обновляется, переместите эту строку из вашего l oop.