Как создать файл в 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);
        }
    }
}

Когда закончите и запустите программу, результат будет иметь следующий вид:

Результат

Файл создан (File created)

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();
		}

	}

}