Во-первых, если возможно, я бы рекомендовал вам использовать классы java.nio.file (например, Path ) вместо подхода, основанного на File, Вы создадите объекты Path с помощью файловой системы. Вы можете использовать файловую систему по умолчанию, если здесь не требуется гибкость:
final String folder = ...
final String filename = ...
final FileSystem fs = FileSystems.getDefault();
final Path myFile fs.getPath(folder, filename);
Тогда ваша проблема легко решается очень удобным API:
final Path destinationFolder = dest.getParent();
Files.createDirectories(myPath.getParent());
try (final OutputStream os = Files.newOutputStream(myFile)) {
...
}
Метод Files.createDirectories () не завершится ошибкой, если каталог уже существует, но может произойти сбой по другим причинам. Например, если существует файл "foo / bar", Files.createDirectories ("foo / bar / folder"), скорее всего, не будет успешным. ;)
Пожалуйста, внимательно прочитайте Javadoc!
Чтобы проверить, указывает ли путь на существующий каталог, просто пользователь:
Files.isDirectory(somePath);
При необходимости вы можете конвертировать между Файл и Путь . Однако вы потеряете информацию о файловой системе:
final Path path1 = file1.toPath();
final File file2 = path2.toFile();