Должен ли я проверить состояние
if(file.exists){ }else{ new File(); }
Нет, вам не нужно этого делать: см. Другие ответы для решения.
На самом деле, было бы плохой идеей сделать что-то подобное, поскольку это создает потенциальное состояние гонки, которое может привести к тому, что ваше приложение изредка умрет ... или ударит файл !
Предположим, что операционная система выгрузила ваше приложение сразу же после вызова file.exists()
, возвращающего false
, и передала управление другому приложению. Затем предположим, что другое приложение создало файл. Теперь, когда ваше приложение будет возобновлено операционной системой, оно не поймет, что файл был создан, и попытается создать его самостоятельно. В зависимости от обстоятельств это может привести к затиранию существующего файла или к тому, что это приложение вызовет IOException из-за конфликта блокировки файлов.
Кстати, new File()
на самом деле не вызывает создания объектов файловой системы. Это происходит только тогда, когда вы «открываете» файл; например позвонив по номеру new FileOutputStream(file);