Java - Создать файл

Java - Создать файл

В этом кратком руководстве мы узнаем, как создать новый файл на Java - сначала с помощью JDK6, затем более нового JDK7 с NIO и, наконец, библиотекиApache Commons IO.

Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.

1. С Java - JDK 6

Начнем сthe standard solution using the old JDK 6 File API:

@Test
public void givenUsingJDK6_whenCreatingFile_thenCorrect() throws IOException {
    File newFile = new File("src/test/resources/newFile_jdk6.txt");
    boolean success = newFile.createNewFile();

    assertTrue(success);
}

Обратите внимание, что для успешного выполнения этой операции файл не должен существовать; если файл существует, то операцияcreateNewFile вернет false.

2. С Java - JDK 7

Давайте теперь посмотрим на более новое решение - с использованием поддержки NIO2 в JDK 7:

@Test
public void givenUsingJDK7nio2_whenCreatingFile_thenCorrect()
  throws IOException {
    Path newFilePath = Paths.get("src/test/resources/newFile_jdk7.txt");
    Files.createFile(newFilePath);
}

Как видите, код по-прежнему очень прост; теперь мы используем новый интерфейсPath вместо старогоFile.

Здесь следует отметить, что новый API хорошо использует исключения - если файл уже существует, нам больше не нужно проверять код возврата - вместо этого мы получаемFileAlreadyExistsException:

java.nio.file.FileAlreadyExistsException: srctestresourcesnewFile_jdk7.txt
    at sun.n.f.WindowsException.translateToIOException(WindowsException.java:81)

3. С гуавой

Guava решение для создания нового файла также является быстрым:

@Test
public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException {
    Files.touch(new File("src/test/resources/newFile_guava.txt"));
}

4. С Commons IO

Apache Commons предоставляет методFileUtils.touch(), который реализует то же поведение, что и утилита «touch» в Linux - он создает новый пустой файл или даже файл и полный путь к нему в файловой системе:

@Test
public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException {
    FileUtils.touch(new File("src/test/resources/newFile_commonsio.txt"));
}

Обратите внимание, что это немного отличается от предыдущих примеров - еслиthe file already exists, the operation doesn’t fail - он просто ничего не делает.

И вот у нас это есть - 4 быстрых способа создать новый файл на Java.