Создание файла – очень распространенная операция ввода-вывода. Сегодня мы рассмотрим различные способы создания файла в Java.
Java создать файл
Существует три популярных метода создания файла в Java. Давайте посмотрим на них поочередно.
-
File.createNewFile()
java.io.File
класс можно использовать для создания нового файла в Java. При инициализации объекта File мы указываем имя файла, а затем можем вызвать методcreateNewFile()
для создания нового файла в Java. МетодcreateNewFile()
возвращаетtrue
, если новый файл создан, иfalse
, если файл уже существует. Этот метод также генерирует исключение java.io.IOException, если не удается создать файл. Созданный файл пуст и имеет размер ноль байтов. При создании объекта File, передавая имя файла, его можно указать с абсолютным путем, или мы можем указать только имя файла, или относительный путь. Для относительного пути объект File пытается найти файлы в корневом каталоге проекта. Если мы запускаем программу из командной строки, для относительного пути объект File пытается найти файлы в текущем каталоге. При создании пути к файлу мы должны использовать системное свойствоfile.separator
, чтобы сделать нашу программу платформенно-независимой. Давайте рассмотрим различные сценарии с помощью простой программы на Java для создания нового файла.package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile { /** * Этот класс показывает, как создать файл в Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String fileSeparator = System.getProperty("file.separator"); //абсолютное имя файла с путем String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile()){ System.out.println(absoluteFilePath+" Файл создан"); }else System.out.println("Файл "+absoluteFilePath+" уже существует"); //только имя файла file = new File("file.txt"); if(file.createNewFile()){ System.out.println("file.txt Файл создан в корневом каталоге проекта"); }else System.out.println("Файл file.txt уже существует в корневом каталоге проекта"); //относительный путь String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" Файл создан в корневом каталоге проекта"); }else System.out.println("Файл "+relativePath+" уже существует в корневом каталоге проекта"); } }
При выполнении вышеприведенной программы из среды Eclipse IDE в первый раз, производится следующий вывод.
/Users/pankaj/file.txt Файл создан file.txt Файл создан в корневом каталоге проекта Exception in thread "main" java.io.IOException: Нет такого файла или каталога at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
Для относительного пути генерируется исключение IOException, потому что каталог
tmp
отсутствует в корневом каталоге проекта. Таким образом, ясно, что методcreateNewFile()
просто пытается создать файл, и любой каталог, абсолютный или относительный, должен уже существовать, иначе он генерирует исключениеIOException
. Поэтому я создал каталог “tmp” в корневом каталоге проекта и снова выполнил программу, вот результат.Файл /Users/pankaj/file.txt уже существует Файл file.txt уже существует в корневом каталоге проекта tmp/file.txt Файл создан в корневом каталоге проекта
Первые два файла уже существовали, поэтому
createNewFile()
возвращаетfalse
, третий файл был создан в каталоге tmp и возвращает true. Любое последующее выполнение приводит к следующему выводу:Файл /Users/pankaj/file.txt уже существует Файл file.txt уже существует в корневом каталоге проекта Файл tmp/file.txt уже существует в корневом каталоге проекта
Если вы запустите ту же программу из каталога классов терминала, вот результат.
//первое выполнение из каталога выходных классов pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Файл /Users/pankaj/file.txt уже существует file.txt Файл создан в корневом каталоге проекта Exception in thread "main" java.io.IOException: Нет такого файла или каталога 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 не существует, давайте создадим его pankaj:~/CODE/JavaFiles/bin$ mkdir tmp //второе выполнение pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Файл /Users/pankaj/file.txt уже существует Файл file.txt уже существует в корневом каталоге проекта tmp/file.txt Файл создан в корневом каталоге проекта //третье и последующее выполнение pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Файл /Users/pankaj/file.txt уже существует Файл file.txt уже существует в корневом каталоге проекта Файл tmp/file.txt уже существует в корневом каталоге проекта
-
FileOutputStream.write(byte[] b)
Если вы хотите создать новый файл и одновременно записать в него некоторые данные, вы можете использовать метод записи FileOutputStream. Ниже приведен простой фрагмент кода, чтобы показать его использование. Правила для абсолютного пути и относительного пути, обсуждаемые выше, также применимы в этом случае.
String fileData = "Панкадж Кумар"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
Мы можем использовать класс Java NIO Files для создания нового файла и записи в него данных. Это хороший вариант, потому что нам не нужно беспокоиться о закрытии ресурсов ввода-вывода.
String fileData = "Панкадж Кумар"; Files.write(Paths.get("name.txt"), fileData.getBytes());
Вот и все для создания нового файла в программе на Java.
Вы можете ознакомиться с большим количеством примеров на языке Java в нашем репозитории GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file