Если я правильно понимаю трассировку стека, исключение наступает при попытке создать новый FileWriter
. Невозможно узнать причину, не исследуя немного дальше.
- Возвращаемые значения могут что-то сказать. Особенно, проверьте, что
File.delete()
возвращает.
- Прежде чем пытаться создать новый
FileWriter
, проверьте, что возвращает File.exists()
.
Если предыдущий delete()
возвращает true
, а exists()
сразу после него также возвращает true
в однопоточной программе, то это действительно что-то странное.
Редактировать: , поэтому кажется, что удаление прошло успешно, а файл не существовал после этого. Конечно, так оно и должно работать, поэтому странно, почему FileWriter
выдает исключение. Еще одна мысль, попробуйте проверить File.getParentFile().canWrite()
. То есть ваши разрешения на запись в каталог каким-то образом исчезают.
Редактировать 2:
Не получайте ошибку на другом компьютере с той же ОС. Теперь, как мне убедиться, что эта ошибка не появится в приложении, где она будет развернута?
Пока у вас есть одна машина, которая работает неправильно, и одна , которая работает правильно. Может быть, вы могли бы попробовать это на еще большем количестве машин. Вполне возможно, что первая машина как-то сломана, и это вызывает ошибки. Удивительно, как часто цифровые компьютеры и их программы (я имею в виду ОС и Java, а не обязательно вашу программу) могут быть просто «немного сломаны», так что они почти всегда работают почти идеально, но случайным образом выходят из строя с некоторым конкретным оборудованием & вариант использования - обычно под большой нагрузкой - аналогично тому, как могут вести себя некорректные многопоточные программы. Это не ваша вина, чтобы быть вашей проблемой: -)
Честно говоря, единственный способ сделать уверенным , что ошибки не появятся на компьютере X, - это запустить программу на компьютере X. Необычные вещи, такие как создание и удаление одного и того же файла 8000 раз в быстром режиме наследование подвержено ошибкам, даже если оно «должно» работать. Компьютеры, операционные системы и API-интерфейсы не идеальны. Чем более необычные вещи вы делаете, тем чаще недостатки проявляются, потому что необычное использование, как правило, менее тщательно проверяется, чем повседневные операции.