Автор оригинала: Eugen Paraschiv.
1. Обзор
В этом кратком руководстве мы узнаем, как создать новый файл на Java – сначала с помощью классов Files и Path из NIO, затем классов Java File и FileOutputStream , Google Guava и , наконец, библиотеки Apache Commons IO .
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
2. Настройка
В примерах мы определим константу для имени файла:
private final String FILE_NAME = "src/test/resources/fileToCreate.txt";
И мы также добавим шаг очистки, чтобы убедиться, что файл еще не существует перед каждым тестом, и удалить его после каждого запуска теста:
@AfterEach @BeforeEach public void cleanUpFiles() { File targetFile = new File(FILE_NAME); targetFile.delete(); }
3. Использование файлов NIO.CreateFile()
Давайте начнем с , используя Files.CreateFile() метод из пакета Java NIO:
@Test public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException { Path newFilePath = Paths.get(FILE_NAME); Files.createFile(newFilePath); }
Как вы можете видеть, код по-прежнему очень прост; теперь мы используем новый Путь интерфейс вместо старого Файла .
Здесь следует отметить, что новый API хорошо использует исключения. Если файл уже существует, нам больше не нужно проверять код возврата. Вместо этого мы получим исключение FileAlreadyExistsException :
java.nio.file.FileAlreadyExistsException: src/test/resources/fileToCreate.txt at sun.n.f.WindowsException.translateToIOException(WindowsException.java:81)
4. Использование файла.createNewFile()
Давайте теперь посмотрим, как мы можем сделать то же самое с помощью java.io.Файл класс:
@Test public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException { File newFile = new File(FILE_NAME); boolean success = newFile.createNewFile(); assertTrue(success); }
Обратите внимание, что файл не должен существовать, чтобы эта операция прошла успешно. Если файл действительно существует, то операция create New File() вернет false.
5. Использование FileOutputStream
Другой способ создать новый файл – использовать java.io.FileOutputStream :
@Test public void givenUsingFileOutputStream_whenCreatingFile_thenCorrect() throws IOException { try(FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)){ } }
В этом случае новый файл создается при создании экземпляра объекта FileOutputStream . Если файл с заданным именем уже существует, он будет перезаписан . Если, однако, существующий файл является каталогом или новый файл не может быть создан по какой-либо причине, то мы получим исключение FileNotFoundException .
Кроме того, обратите внимание, что мы использовали оператор try-with-resources , чтобы убедиться, что поток правильно закрыт.
6. Использование гуавы
Решение Guava для создания нового файла также является быстрым однострочным:
@Test public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException { com.google.common.io.Files.touch(new File(FILE_NAME)); }
7. Использование Apache Commons IO
Библиотека Apache Commons предоставляет Файлы.прикасаться() метод, реализующий то же поведение, что и ” прикасаться “утилита в Linux.
Поэтому он создает новый пустой файл или даже файл и полный путь к нему в файловой системе:
@Test public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException { FileUtils.touch(new File(FILE_NAME)); }
Обратите внимание, что это ведет себя немного иначе, чем в предыдущих примерах: если файл уже существует, операция не завершается неудачно, она просто ничего не делает.
И вот он у нас – 4 быстрых способа создания нового файла на Java.
8. Заключение
В этой статье мы рассмотрели различные решения для создания файла на Java. Мы использовали классы, которые являются частью JDK и внешних библиотек.
Код для примеров доступен на GitHub .