- Java create new file
- Java create file
- File.createNewFile()
- FileOutputStream.write(byte[] b)
- Java NIO Files.write()
- Как создать файл в Java
- Используйте класс java.io.File
- Пример
- Результат
- 2. Используйте класс java.io.FileOutputStream
- Пример
- 3. Используйте Java NIO Files.write()
- Пример
- Java — создать файл
- 2. Настройка
- 3. Использование NIO Files.createFile()
- 4. Использование File.createNewFile()
- 5. Использование FileOutputStream
- 6. Использование гуавы
- 7. Использование Apache Commons IO
- 8. Заключение
Java create new file
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
Creating a file is a very common IO operation. Today we will look into different ways to create a file in java.
Java create file
There are three popular methods to create file in java. Let’s look at them one by one.
File.createNewFile()
java.io.File class can be used to create a new File in Java. When we initialize File object, we provide the file name and then we can call createNewFile() method to create new file in Java. File createNewFile() method returns true if new file is created and false if file already exists. This method also throws java.io.IOException when it’s not able to create the file. The files created is empty and of zero bytes. When we create the File object by passing the file name, it can be with absolute path, or we can only provide the file name or we can provide the relative path. For a non-absolute path, File object tries to locate files in the project root directory. If we run the program from command line, for the non-absolute path, File object tries to locate files from the current directory. While creating the file path, we should use System property file.separator to make our program platform independent. Let’s see different scenarios with a simple java program to create a new file in java.
package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile < /** * This class shows how to create a File in Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException < String fileSeparator = System.getProperty("file.separator"); //absolute file name with path String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile())< System.out.println(absoluteFilePath+" File Created"); >else System.out.println("File "+absoluteFilePath+" already exists"); //file name only file = new File("file.txt"); if(file.createNewFile())< System.out.println("file.txt File Created in Project root directory"); >else System.out.println("File file.txt already exists in the project root directory"); //relative path String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile())< System.out.println(relativePath+" File Created in Project root directory"); >else System.out.println("File "+relativePath+" already exists in the project root directory"); > >
/Users/pankaj/file.txt File Created file.txt File Created in Project root directory Exception in thread "main" java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
For the relative path, it throws IOException because tmp directory is not present in the project root folder. So it’s clear that createNewFile() just tries to create the file and any directory either absolute or relative should be present already, else it throws IOException . So I created “tmp” directory in the project root and executed the program again, here is the output.
File /Users/pankaj/file.txt already exists File file.txt already exists in the project root directory tmp/file.txt File Created in Project root directory
First two files were already present, so createNewFile() returns false , third file was created in tmp directory and returns true. Any subsequent execution results in the following output:
File /Users/pankaj/file.txt already exists File file.txt already exists in the project root directory File tmp/file.txt already exists in the project root directory
//first execution from classes output directory pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile File /Users/pankaj/file.txt already exists file.txt File Created in Project root directory Exception in thread "main" java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32) //tmp directory doesn't exist, let's create it pankaj:~/CODE/JavaFiles/bin$ mkdir tmp //second time execution pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile File /Users/pankaj/file.txt already exists File file.txt already exists in the project root directory tmp/file.txt File Created in Project root directory //third and subsequent execution pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile File /Users/pankaj/file.txt already exists File file.txt already exists in project root directory File tmp/file.txt already exists in project root directory
FileOutputStream.write(byte[] b)
If you want to create a new file and at the same time write some data into it, you can use FileOutputStream write method. Below is a simple code snippet to show it’s usage. The rules for absolute path and relative path discussed above is applicable in this case too.
String fileData = "Pankaj Kumar"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
Java NIO Files.write()
We can use Java NIO Files class to create a new file and write some data into it. This is a good option because we don’t have to worry about closing IO resources.
String fileData = "Pankaj Kumar"; Files.write(Paths.get("name.txt"), fileData.getBytes());
That’s all for creating a new file in the java program.
You can checkout more core java examples from our GitHub Repository.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Как создать файл в Java
Создание нового файла в Java не такое уж сложное дело. Эта статья поможет новичкам научиться, как создать и записать новый файл в Java.
Сначала научимся, как создать новые файлы в Java.
Есть много способов для этого, но в этой статье мы расскажем о трех способах создания файла.
Используйте класс java.io.File
При установлении объекта File вы указываете название файла и дальше используйте метод createNewFile(), который атомарно создает новый пустой файл с названием абстрактного пути, но только в случае, если файл с таким названием не существует.
Данный метод возвращает true, если названный файл не существует и был успешно создан. Возвращает false, если файл существует. Он также создает java.io.IOException, когда не может создать файл. Созданный файл пуст и имеет нулевой байт.
Данный метод не должен быть использован для блокировки файлов, так как протокол, созданный в результате этого, не может надежно работать.
Запомните, что этот метод только создает файл, но не записывает к нему контент.
Пример
// Java программа для демонстрирования метода createNewFile() import java.io.File; public class FileCreator < public static void main(String args[]) < try < // Возьмите файл File f = new File("D:\\example.txt"); //Создайте новый файл // Убедитесь, что он не существует if (f.createNewFile()) System.out.println("File created"); else System.out.println("File already exists"); > catch (Exception e) < System.err.println(e); >> >
Когда закончите и запустите программу, результат будет иметь следующий вид:
Результат
2. Используйте класс java.io.FileOutputStream
Если хотите создать новый файл и одновременно записать какую-нибудь информацию в нем, можете использовать метод FileOutputStream.write. Этот метод автоматически создает новый файл и записывает в нем контент.
Метод FileOutputStream используется для записи байтов в файл. Если хотите записать символьно-ориентированную информацию, будет лучше использовать FileWriter.
Смотрите использование кода:
Пример
String fileData = "Some Test"; FileOutputStream fos = new FileOutputStream("D:\\example.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
3. Используйте Java NIO Files.write()
Используйте класс Java NIO Files для создания нового файла и записи информации в нем. Этот Java класс представляет метод write(Path path, byte[] bytes, OpenOption… options), который записывает байты к файлу по указанному пути.
С использованием класса Files возможно создавать, перемещать, копировать, удалять файлы и каталоги. Он также может быть использован для записи и чтения файла.
Files.write() — это рекомендуемый способ создания файла, так как вам не придется беспокоиться о закрытии ресурсов IO.
Этот класс имеет следующие параметры:
- lines — объект для реализования последовательности символов. Запишите строки текста к файлу. Каждая строка — это последовательность символов и записывается к файлу поочередно. Каждая строка заканчивается разделителем строки платформы.
- options — Этот параметр указывает, как создается или открывается файл. Если никакой параметр не указан, по умолчанию будут выбраны параметры CREATE, TRUNCATE_EXISTING and WRITE. Это означает, что он открывает файл для записи и создает файл, если он не существует, или размер файла доводит до 0, если файл существует.
- path — Указывает путь.
- cs — Набор символов, используемый для кодировки
All the bytes in byte array are written to the file. This method ensures that the file is closed when all the bytes have been written and returns the path of written file.
Пример
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FilesWriterExample < public static void main(String[] args) < Path path = Paths.get("D:/data/example.txt"); try < String str = "Some write file Example"; byte[] bs = str.getBytes(); Path writtenFilePath = Files.write(path, bs); System.out.println("Written content in file:\n"+ new String(Files.readAllBytes(writtenFilePath))); > catch (Exception e) < e.printStackTrace(); >> >
Java — создать файл
В этом кратком руководстве мы узнаем, как создать новый файл в Java — сначала используя классы Files и Path из NIO, затем классы Java File и FileOutputStream , Google Guava и, наконец, библиотеку Apache Commons IO .
Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.
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 Files.createFile()
Начнем с использования метода Files.createFile() из пакета Java NIO:
@Test public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException Path newFilePath = Paths.get(FILE_NAME); Files.createFile(newFilePath); >
Как видите, код по-прежнему очень прост; теперь мы используем новый интерфейс Path вместо старого File .
Здесь следует отметить, что новый API хорошо использует исключения. Если файл уже существует, нам больше не нужно проверять код возврата. Вместо этого мы получим FileAlreadyExistsException :
java.nio.file.FileAlreadyExistsException: code class="language-java">src/test/resources/fileToCreate.txt
4. Использование File.createNewFile()
Давайте теперь посмотрим, как мы можем сделать то же самое, используя класс java.io.File :
@Test public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException File newFile = new File(FILE_NAME); boolean success = newFile.createNewFile(); assertTrue(success); >
Обратите внимание, что для успешного выполнения этой операции файл не должен существовать. Если файл существует, то операция createNewFile() вернет 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 предоставляет метод FileUtils.touch() , который реализует то же поведение, что и утилита « touch » в Linux.
Поэтому он создает новый пустой файл или даже файл и полный путь к нему в файловой системе:
@Test public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException FileUtils.touch(new File(FILE_NAME)); >
Обратите внимание, что это ведет себя немного иначе, чем в предыдущих примерах: если файл уже существует, операция не завершается ошибкой, она просто ничего не делает.
Вот и все — 4 быстрых способа создать новый файл в Java.
8. Заключение
В этой статье мы рассмотрели разные решения для создания файла в Java. Мы использовали классы, входящие в состав JDK и внешних библиотек.