2015-01-10 3 views
10

Что такое способ создания файла Java 7 или Java 8, если он не существует?Чистый Java 7 способ создания файла, если он не существует

+1

AFAIK Java 8 не меняет способ работы с файлами. – alfasin

+1

@alfasin Java 7 (и, следовательно, Java 8) сильно изменил его с помощью java.nio.file; и сегодня, к сожалению, он все еще недоиспользуется – fge

+0

@fge Совершенно верно. Я удалю его. – Biffen

ответ

20

Не уверен, что вы хотите, но, например:

try { 
    Files.createFile(thePath); 
} catch (FileAlreadyExistsException ignored) { 
} 

А есть и другие решения; например:

if (!Files.exists(thePath, LinkOption.NOFOLLOW_LINKS)) 
    Files.createFile(thePath); 

Обратите внимание, что в отличие от File, они будут бросать исключения, если создание файла не удается! И соответствующие им (например, AccessDeniedException, ReadOnlyFileSystemException и т. Д.)

Для получения дополнительной информации см. here. Также см. why you should migrate to java.nio.file, quickly.

+0

Итак, для этого нет ни одного кода строки? – emotionull

+2

Нет, но действительно ли это имеет значение? ;) Вы можете просто создать свой собственный метод утилиты, если хотите, это не проблема – fge

+2

try {Files.createFile (thePath); } catch (FileAlreadyExistsException игнорируется) {} – mac01021

1

Вы можете сделать

File f = new File("pathToYourFile"); 
if(!f.exists() && !f.isDirectory()) 
{ 
    f.createNewFile() 
} 

Если вы хотите использовать NIO.2 вы можете использовать методы Файлы класса.

boolean exists(Path path,LinkOption. . . options) 
Path createTempFile(Path dir, String prefix,String suffix, FileAttribute<?>. . . attrs) 
createFile(Path path, FileAttribute<?>... attrs) 

Как FGE отметил в комментарии createNewFile() методов возвращает boolean значение, обозначающее, если файл был фактически создан или нет. К сожалению, нет способа узнать, почему это не удалось. На самом деле это одна из причин, по которым были введены API-интерфейсы ввода-вывода NIO.2.

+1

И ... Вы не проверяете результат '.createNewFile()'! – fge

Смежные вопросы