Как составить файл files

Создание нового файла в Java не такое уж сложное дело. Эта статья поможет новичкам научиться, как создать и записать новый файл в Java.

Сначала научимся, как создать новые файлы в Java.

Есть много способов для этого, но в этой статье мы расскажем о трех способах создания файла.

При установлении объекта 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)

Если хотите создать новый файл и одновременно записать какую-нибудь информацию в нем, можете использовать метод FileOutputStream.write. Этот метод автоматически создает новый файл и записывает в нем контент.

Метод FileOutputStream используется для записи байтов в файл. Если хотите записать символьно-ориентированную информацию, будет лучше использовать FileWriter.

Смотрите использование кода:

Пример

String fileData = "Some Test";
FileOutputStream fos = new FileOutputStream("D:\example.txt");
fos.write(fileData.getBytes());
fos.flush();
fos.close();

Используйте класс 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 с использованием различных методов.

Одна из главных причин популярности Java – независимость от платформы. Java по-прежнему является актуальным языком программирования, который не имеет признаков снижения популярности, и поэтому его стоит изучать. Большинство разработчиков выбирают его как свой первый язык программирования, потому что его легко выучить.

Выполнение программы Java

Все языки программирования высокого уровня (также называемые третьим поколением) позволяют писать программы на языке, аналогичном (хотя и гораздо более простом), чем естественный язык. Программа высокого уровня называется исходным кодом.

Что такое файл в Java?

Файл – это не что иное, как простое хранилище данных на языке Java. Файловая система может реализовывать ограничения для определенных операций, таких как чтение, запись и выполнение. Эти ограничения известны как права доступа.

При чтении файла в Java мы должны знать класс файлов Java. Класс Java File представляет файлы и имена каталогов в абстрактной манере. Класс File имеет несколько методов для работы с каталогами и файлами, таких как создание новых каталогов или файлов, удаление и переименование каталогов или файлов и т. д. Объект File представляет фактический файл / каталог на диске.

Теперь давайте разберемся с различными методами создания файла.

Методы для создания файла в Java

1. Создайте файл с классом java.io.File

Вам нужно использовать метод File.createNewFile(). Этот метод возвращает логическое значение:

  • истина, если файл выполнен.
  • false, если файл уже существует или операция по какой-то причине не открывается.

Этот метод также генерирует исключение java.io.IOException, когда он не может создать файл.

Когда мы создаем объект File, передавая имя файла, он может быть с абсолютным путем, или мы можем предоставить только имя файла, или мы можем предоставить относительный путь. Для неабсолютного пути объект File пытается найти файлы в корневом каталоге проекта.

Если мы запустим программу из командной строки, для неабсолютного пути объект File попытается найти файлы из текущего каталога. Экземпляры класса File являются неизменяемыми; то есть, после создания абстрактный путь, представленный объектом File, никогда не изменится.

Теперь давайте рассмотрим небольшой пример и разберемся, как он работает.

File file = new File("c://temp//testFile1.txt");
//create the file.
if (file.createNewFile()){
System.out.println("File is created!");
}
else{
System.out.println("File already exists.");
}
//write content
FileWriter writer = new FileWriter (file);
writer.write("Test data");
writer.close();

Пожалуйста, обратите внимание, что этот метод будет только создавать файл, но не записывать в него никакого содержимого. Теперь давайте двигаться дальше и рассмотрим следующий метод.

2. Создайте файл с классом java.io.FileOutputStream

Если вы хотите создать новый файл и в то же время, если хотите записать в него некоторые данные, вы можете использовать метод записи FileOutputStream. В Java FileOutputStream является классом потока байтов. Чтобы записать данные в файл, вы должны преобразовать данные в байты, а затем сохранить их в файл.

Например:

String data = "Test data";
FileOutputStream out = new FileOutputStream("c://temp//testFile2.txt");
out.write(data.getBytes());
<span>out.close();

Класс FileOutputStream хранит данные в виде отдельных байтов. Может использоваться для создания текстовых файлов. Файл представляет собой хранилище данных на втором носителе, таком как жесткий диск или компакт-диск. Метод FileOutputStream.write() автоматически создает новый файл и записывает в него содержимое.

3. Создайте файл с помощью Java.nio.file.Files – Java NIO

Files.write() – лучший способ создать файл, и он должен быть вашим предпочтительным подходом в будущем, если вы его еще не используете. Это хороший вариант, потому что нам не нужно беспокоиться о закрытии ресурсов ввода-вывода. Каждая строка представляет собой последовательность символов и записывается в файл последовательно, каждая строка заканчивается разделителем строк платформы.

Метод:

public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException

Создает новый и пустой файл, и если файл уже существует, то будет ошибка.

Параметры:

путь – путь для создания файла.

attrs – необязательный список атрибутов файла, устанавливаемых атомарно при создании.

Например:

String data = "Test data";
Files.write(Paths.get("c://temp//testFile3.txt");
data.getBytes());
//or
List<String> lines = Arrays.asList("1st line", "2nd line");
Files.write(Paths.get("file6.txt");
lines,
StandardCharsets.UTF_8,
StandardOpenOption.CREATE,
StandardOpenOption.APPEND);

Далее, давайте посмотрим на создание временного файла.

4. Java также может создавать временные файлы

Создание временного файла в java может потребоваться во многих сценариях, но в основном это происходит во время модульных тестов, где вы не хотите сохранять результаты. Как только тестовый пример закончен, вас не волнует содержимое файла.

Создание временного файла с использованием java.io.File.createTempFile()

Public class TemporaryFileExample{
Public static void main(string[] args){
try{
final path path = Files.createTempFile("myTempFile",".txt");

System.out.println("Temp file : " + path);
// delete file on exist.
path.toFile().deleteonExit();
} catch (IOException e){
e.printStackTrace();
}
}
}

с использованием NIO

Public class TemporaryFileExample{
Public static void main(string[] args){
File temp;
try{
temp = File.createTempFile("myTempFile" , ".txt");

System.out.println("Temp file created : " +
temp.getAbsolutePath());
} catch (IOException e){
e.printStackTrace();
}
}
}

Для создания временного файла используются следующие два метода.

1. createTempFile(Path, String, String, FileAttribute<?>… attrs) – создает файл tmp в указанном каталоге.

Вышеуказанный метод принимает четыре аргумента.

Путь -> указать каталог, в котором будет создан файл.

Строка -> чтобы упомянуть префикс имени файла. Используйте ноль, чтобы избежать префикса.

Строка -> чтобы упомянуть суффикс имени файла. т.е. расширение файла. Используйте null, чтобы использовать .tmp в качестве расширения.

attrs -> Это необязательно, чтобы упоминать список атрибутов файла, чтобы установить атомарно при создании файла

Например. Files.createTempFile(path,null, null); – создает временный файл с расширением .tmp по указанному пути

2. createTempFile(String, String, FileAttribute<?>) – создает временный файл во временном каталоге по умолчанию системы / сервера.

Например: Files.createTempFile (null, null) – создает временный файл во временной папке по умолчанию в системе. В Windows временная папка может быть C: UsersusernameAppDataLocalTemp, где username – ваш идентификатор входа в Windows.

Содержание

  • 1 Поток выполнения Java-программы
  • 2 Что такое файл в Java?
  • 3 Немного теории по созданию файла в Java
  • 4 Методы для создания файла в Java
    • 4.1 1. Обзор
    • 4.2 2. Настройка
    • 4.3 3. Использование файлов NIO.CreateFile()
    • 4.4 4. Использование файла.createNewFile()
    • 4.5 5. Использование FileOutputStream
    • 4.6 6. Использование гуавы
    • 4.7 7. Использование Apache Commons IO
  • 5 Конструкторы
  • 6 Методы класса File
  • 7 Работа с каталогами
  • 8 Работа с файлами
  • 9 Простой пример записи в файл в Java
  • 10 Рефакторинг
  • 11 Как записать Java в файл построчно
    • 11.1 Запись бинарной информации в файл
    • 11.2 Запись текста в файл (Java 6)

Выполнение программы Java

Все языки программирования высокого уровня (также называемые третьим поколением) позволяют писать программы на языке, аналогичном (хотя и гораздо более простом), чем естественный язык. Программа высокого уровня называется исходным кодом.

Что такое файл в Java?

Файл – это не что иное, как простое хранилище данных на языке Java. Файловая система может реализовывать ограничения для определенных операций, таких как чтение, запись и выполнение. Эти ограничения известны как права доступа.

При чтении файла в Java мы должны знать класс файлов Java. Класс Java File представляет файлы и имена каталогов в абстрактной манере. Класс File имеет несколько методов для работы с каталогами и файлами, таких как создание новых каталогов или файлов, удаление и переименование каталогов или файлов и т. д. Объект File представляет фактический файл / каталог на диске.

Теперь давайте разберемся с различными методами создания файла.

Немного теории по созданию файла в Java

Создать файл в Java можно одним из трех способов, передав в объект File:

  • абсолютный путь
  • только указать имя файла
  • указать относительный путь (в этом случае объект файла пытается найти файлы в корневой директории проекта)

При создании пути к файлу мы должны использовать свойство системы File.separator, чтобы сделать нашу программу платформонезависимой.

Давайте рассмотрим различные способы создания файла в простой Java программе:

Java <текстареа wrap=»soft» class=»crayon-plain print-no» data-settings=»dblclick» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;»> package ua.com.prologistic; import java.io.File; import java.io.IOException; public class CreateNewFile { //В этом классе представлены способы создания файла в Java public static void main(String[] args) throws IOException { // получаем разделитель пути в текущей операционной системе String fileSeparator = System.getProperty(«file.separator»); //создаем абсолютный путь к файлу String absoluteFilePath = fileSeparator + «Users» + fileSeparator + «prologistic» + 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 + » уже существует в директории проекта»); } }

1234567891011121314151617181920212223242526272829303132333435 packageua.com.prologistic;importjava.io.File;importjava.io.IOException;publicclassCreateNewFile{    //В этом классе представлены способы создания файла в Java    publicstaticvoidmain(String[]args)throwsIOException{        // получаем разделитель пути в текущей операционной системе        StringfileSeparator=System.getProperty(«file.separator»);                 //создаем абсолютный путь к файлу        StringabsoluteFilePath=fileSeparator+»Users»+fileSeparator+»prologistic»+fileSeparator+»file.txt»;         File file=newFile(absoluteFilePath);        if(file.createNewFile()){            System.out.println(absoluteFilePath+» Файл создан»);        }else{             System.out.println(«Файл «+absoluteFilePath+» уже существует»);            //создаем файл только с указанием имени файла        file=newFile(«file.txt»);        if(file.createNewFile()){            System.out.println(«file.txt файл создан в корневой директории проекта»);        }elseSystem.out.println(«file.txt файл уже существует в корневой директории проекта»);                 //создаем файл с указанием относительного пути к файлу        StringrelativePath=»tmp»+fileSeparator+»file.txt»;        file=newFile(relativePath);        if(file.createNewFile()){            System.out.println(relativePath+» файл создан в корневой директории проекта»);        }elseSystem.out.println(«Файл «+relativePath+» уже существует в директории проекта»);    }}

Когда мы запустим эту программу первый раз, то увидим следующий результат:

Java <текстареа wrap=»soft» class=»crayon-plain print-no» data-settings=»dblclick» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;»> /Users/prologistic/file.txt Файл создан file.txt файл создан в корневой директории проекта 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 ua.com.prologistic.CreateNewFile.main(CreateNewFile.java:32)

1234567 /Users/prologistic/file.txtФайлсозданfile.txtфайлсозданвкорневойдиректориипроектаException inthread»main»java.io.IOException:No such file ordirectory    at java.io.UnixFileSystem.createFileExclusively(NativeMethod)    at java.io.File.createNewFile(File.java:947)    at ua.com.prologistic.CreateNewFile.main(CreateNewFile.java:32)

В том месте, где мы использовали относительный путь, программа бросает IOException, поскольку tmp каталога просто нет в корневой папке проекта. Поэтому метод createNewFile() просто пытается создать файл в корневом каталоге проекта.

Теперь давайте создадим каталог tmp в корне проекта и снова выполнил программу. Вот результат:

Java <текстареа wrap=»soft» class=»crayon-plain print-no» data-settings=»dblclick» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;»> Файл /Users/prologistic/file.txt уже существует Файл file.txt уже существует в директории проекта tmp/file.txt файл создан в корневой директории проекта

123 Файл/Users/prologistic/file.txtужесуществуетФайлfile.txtужесуществуетвдиректориипроектаtmp/file.txtфайлсозданвкорневойдиректориипроекта

Здесь мы видим, что файл с указанием полного пути уже существует (был создан, когда мы первый раз запускали программу) и не был создан;

файл с указанием только названия уже существует и не был создан;

файл с указанием относительного пути был успешно создан (в первом запуске этого файла не было, так как папки tmp не существовало).

Вот и все, что нужно знать о создании файлов в Java. Следите за обновлениями раздела Java IO.

Методы для создания файла в Java

1. Создайте файл с классом java.io.File

Вам нужно использовать метод File.createNewFile(). Этот метод возвращает логическое значение:

  • истина, если файл выполнен.
  • false, если файл уже существует или операция по какой-то причине не открывается.

Этот метод также генерирует исключение java.io.IOException, когда он не может создать файл.

Когда мы создаем объект File, передавая имя файла, он может быть с абсолютным путем, или мы можем предоставить только имя файла, или мы можем предоставить относительный путь. Для неабсолютного пути объект File пытается найти файлы в корневом каталоге проекта.

Если мы запустим программу из командной строки, для неабсолютного пути объект File попытается найти файлы из текущего каталога. Экземпляры класса File являются неизменяемыми; то есть, после создания абстрактный путь, представленный объектом File, никогда не изменится.

Теперь давайте рассмотрим небольшой пример и разберемся, как он работает.

File file = new File(«c://temp//testFile1.txt»); //create the file. if (file.createNewFile()){ System.out.println(«File is created!»); } else{ System.out.println(«File already exists.»); } //write content FileWriter writer = new FileWriter (file); writer.write(«Test data»); writer.close();

Пожалуйста, обратите внимание, что этот метод будет только создавать файл, но не записывать в него никакого содержимого. Теперь давайте двигаться дальше и рассмотрим следующий метод.

2. Создайте файл с классом java.io.FileOutputStream

Если вы хотите создать новый файл и в то же время, если хотите записать в него некоторые данные, вы можете использовать метод записи FileOutputStream. В Java FileOutputStream является классом потока байтов. Чтобы записать данные в файл, вы должны преобразовать данные в байты, а затем сохранить их в файл.

Например:

String data = «Test data»; FileOutputStream out = new FileOutputStream(«c://temp//testFile2.txt»); out.write(data.getBytes()); out.close();

Класс FileOutputStream хранит данные в виде отдельных байтов. Может использоваться для создания текстовых файлов. Файл представляет собой хранилище данных на втором носителе, таком как жесткий диск или компакт-диск. Метод FileOutputStream.write() автоматически создает новый файл и записывает в него содержимое.

3. Создайте файл с помощью Java.nio.file.Files – Java NIO

Files.write() – лучший способ создать файл, и он должен быть вашим предпочтительным подходом в будущем, если вы его еще не используете. Это хороший вариант, потому что нам не нужно беспокоиться о закрытии ресурсов ввода-вывода. Каждая строка представляет собой последовательность символов и записывается в файл последовательно, каждая строка заканчивается разделителем строк платформы.

Метод:

public static Path createFile(Path path, FileAttribute… attrs) throws IOException

Создает новый и пустой файл, и если файл уже существует, то будет ошибка.

Параметры:

путь – путь для создания файла.

attrs – необязательный список атрибутов файла, устанавливаемых атомарно при создании.

Например:

String data = «Test data»; Files.write(Paths.get(«c://temp//testFile3.txt»); data.getBytes()); //or List lines = Arrays.asList(«1st line», «2nd line»); Files.write(Paths.get(«file6.txt»); lines, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);

Далее, давайте посмотрим на создание временного файла.

4. Java также может создавать временные файлы

Создание временного файла в java может потребоваться во многих сценариях, но в основном это происходит во время модульных тестов, где вы не хотите сохранять результаты. Как только тестовый пример закончен, вас не волнует содержимое файла.

Создание временного файла с использованием java.io.File.createTempFile()

Public class TemporaryFileExample{ Public static void main(string[] args){ try{ final path path = Files.createTempFile(«myTempFile»,».txt»); System.out.println(«Temp file : » + path); // delete file on exist. path.toFile().deleteonExit(); } catch (IOException e){ e.printStackTrace(); } } }

с использованием NIO

Public class TemporaryFileExample{ Public static void main(string[] args){ File temp; try{ temp = File.createTempFile(«myTempFile» , «.txt»); System.out.println(«Temp file created : » + temp.getAbsolutePath()); } catch (IOException e){ e.printStackTrace(); } } }

Для создания временного файла используются следующие два метода.

1. createTempFile(Path, String, String, FileAttribute… attrs) – создает файл tmp в указанном каталоге.

Вышеуказанный метод принимает четыре аргумента.

Путь -> указать каталог, в котором будет создан файл.

Строка -> чтобы упомянуть префикс имени файла. Используйте ноль, чтобы избежать префикса.

Строка -> чтобы упомянуть суффикс имени файла. т.е. расширение файла. Используйте null, чтобы использовать .tmp в качестве расширения.

attrs -> Это необязательно, чтобы упоминать список атрибутов файла, чтобы установить атомарно при создании файла

Например. Files.createTempFile(path,null, null); – создает временный файл с расширением .tmp по указанному пути

2. createTempFile(String, String, FileAttribute) – создает временный файл во временном каталоге по умолчанию системы / сервера.

Например: Files.createTempFile (null, null) – создает временный файл во временной папке по умолчанию в системе. В Windows временная папка может быть C: UsersusernameAppDataLocalTemp, где username – ваш идентификатор входа в Windows.

1. Обзор

В этом кратком руководстве мы узнаем, как создать новый файл на Java – сначала с помощью классов Files и Path из NIO, затем классов Java File и FileOutputStream , Google Guava и , наконец, библиотеки Apache Commons IO .

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.

Конструкторы

В обозначении имен файлов и каталогов помогают различные конструкторы:

  • File (File parent, String child) — получим файл из соединения родительского пути и строки дочернего пути:

File parentf1 = new File («c:/MyProgram»);File cldf2 = new File (parentf1, «f2.txt»); System.out.println (cldf2);

Результат:

c:MyProgramf2.txt

  • File (String pathname) — увидим файл, представляющий указанное имя пути:

File bestf3 = new File («c:», «MyProgram», «f2.txt»); System.out.println (bestf3);

Результат:

c:MyProgramf2.txt

  • File (String parent, String child) –получим экземпляр, образованный из строк родительского и дочернего путей:

File Myfile = new File («c:/», «f2.txt»);System.out.println (Myfile);

Результат:

c:MyProgramf2.txt

  • File (URI uri) – конверт из URI файла в абстрактный путь:

String fpath = («c:MyProgramsuperf2.png»);File myf= new File (fpath);URI uri = myf.toURI ();System.out.println (uri.to String());

Результат:

Myf:/c:/ MyProgram/superf2.png

Методы класса File

Методы могут помочь узнать данные о файлах: размер или дату последних изменений, к какому типу относится. Также с их помощью можно удалить элемент.

Вот распространенные методы:

  • boolean createNewFile(): создает новый пустой файл. Если файл не будет создан, тогда выводится false.
  • boolean delete(): удаляет каталог или файл.
  • boolean exists(): проверяет, существует ли указанный файл или каталог.
  • boolean equals(Object obj): проверяет, совпадает ли имя пути с заданным объектом.
  • String getName(): выводит название файла или каталога.
  • String getParent(): выводит название каталога-родителя.
  • boolean isDirectory(): передает абстрактный путь, true — если путь указывает на каталог.
  • boolean isFile(): выводит true, если путь указывает на файл.
  • boolean isHidden(): проверяет, скрыт файл или нет (если да — выводит true, если нет — false).
  • String[] list(): генерация списка строк со всеми именами файлов в каталоге.
  • File[] listFiles(): формирование массива и его возврат.
  • long length(): предоставляет данные о длине файла.
  • URI toURI(): будет создан URI файла.
  • boolean setReadable (boolean readable, boolean ownerOnly): устанавливает, кто может читать файл. К примеру, только владелец (owner).
  • boolean setReadOnly(): указывает на файл или каталог, для которых возможно только чтение.

Работа с каталогами

В каталоге могут содержаться файлы и даже другие каталоги. Когда нам необходимо узнать, с чем имеем дело, обращаемся к методу isDirectory(). Если это каталог — увидим true. Затем применяем list() для получения детального перечня того, что внутри:

File Mydir = new File («D://Program»); // проверяем каталог или нет if (Mydir.isDirectory()) { // если да, что в нем For (File item : Mydir.listFiles()){ If (item.isDirectory()){                      System.out.println(item.getName() + »  directory»); } else{ System.out.println(item.getName() + » file»); }

Давайте попробуем придумать новое название и убрать каталог:

File dir = new File («C://MyDir//TestDir»); boolean created = dir.mkdir(); if(created) System.out.println(«Sucсess»); // меняем название File TestDir = new File («C://MyDir//SuperTestDir»); dir.renameTo(TestDir); // убираем каталог boolean deleted = TestDir.delete(); if(deleted) System.out.println(«Removed»);

Работа с файлами

Применяем тот же принцип навигации, что и с каталогами:

File Myf1 = new File(«Programming.txt»); File Myf2 = new File(«Codding.txt»); // проверяем наличие Myf1 и меняем его название if (Myf1.exists()) { if (My1.renameTo(Myf2)) { System.out.println(«Sucсess «); // все ок } else System.out.println(«Not done»); // имя не изменилось } else System.out.println(«Not exist»); }

В Java можно легко управлять файлами, добавлять их, переименовывать и так далее.

Простой пример записи в файл в Java

Перед тем как создавать точку входа в программу, нужно прописать импорты (необходимые классы находятся в библиотеке java.io*, пропишем звездочку, т. к. в дальнейшем понадобятся еще классы из этой библиотеки). Импорт в редакторе должен иметь такой вид:

import java.io.*;

Затем внутри произвольного класса пишем метод main, в котором в свою очередь создаем экземпляр класса FileWriter и записываем его в переменную write:

FileWriter writer = new FileWriter(«text.txt»);

При запуске этой программы будет создан файл text.txt в корне проекта. Для того чтобы записать что-нибудь в этот файл, нужно обратиться к методу write() класса Writer, метод write() принимает в качестве аргумента строку, напишем туда что-нибудь:

writer.write(«пример записи в файл в Java»);

При работе с вводом выводом данных необходимо также учитывать исключительные ситуации по причине того, что мы не всегда знаем, что будет в этих данных. Компилятор не пропустит данный код без специальной конструкции throws Exception, которую нужно вставить в сигнатуре метода main. Также нужно позаботиться о выходе из потока, после метода write() нужно закрыть поток при помощи метода close(). Как должен выглядеть код на этом этапе, показано на рисунке ниже.

Как осуществить запись в файл в Java

При запуске программы в корне проекта появится файл text.txt, в котором будет написано «пример записи в файл в Java». Однако данный пример годится только для ознакомительных целей, чтобы применить его в «боевых» условиях нужно провести небольшой рефакторинг.

Рефакторинг

Первое, что нужно сделать, — заключить код, отвечающий за ввод вывод данных в конструкцию try — catch (так легче управлять исключениями и применять свои исключения). Затем нужно создать отдельную переменную с типом File, куда можно записать адрес и название файла (это удобно, т. к. часто нужно работать с несколькими файлами, их помещают в отдельные переменные и обрабатывают циклом, и только затем результирующая переменная вставляется как параметр в FileWriter).

Также хорошей практикой при работе с потоками ввода/вывода считается использование буфера (класс FileWriter обращается к диску, если данных много это может потребовать много памяти, поэтому разумно манипулировать данными, используя буфер), для этого применяется класс BufferedWriter, а FileWriter записывается в скобки в качестве параметра. Для освобождения буфера вызывается метод flush(), его можно прописать перед методом close(), теперь код будет выглядеть так, как показано ниже.

Как осуществить запись в файл в Java

Как записать Java в файл построчно

Каждый раз при компиляции данного кода в консоли будет перезаписываться одна и та же запись. Как сделать так, чтобы при запуске программы в файл записывалась новая информация построчно? Для этого в первую очередь нужно написать ключевое слово true вторым параметром при создании FileWriter:

BufferedWriter writer = new BufferedWriter(new FileWriter(myFile, true));

Каждый раз при компиляции программа будет записывать в файл строку, которая находится в методе write(), без переноса на следующую строку. В нашем случае получилось так:

пример записи в Java пример записи в Java пример записи в Java

Простой способ переноса строки — это добавление оператора /n к строковому аргументу метода write(), однако такой способ не будет работать в разных операционных системах. Для того чтобы записать файл построчно на различных платформах, нужно использовать метод line.separator класса System. В следующем примере видно, как этот метод записать в переменную lineSeparator, которую потом можно использовать в строковом аргументе метода write():

String lineSeparator = System.getProperty(«line.separator»);

Окончательно код будет выглядеть так, как показано ниже.

Как осуществить запись в файл в Java

Результат выполнения данного кода будет следующим: в файле text.txt при троекратном запуске программы появятся строки «пример записи в Java».

Запись бинарной информации в файл

Если вам требуется записать не текстовые данные, а бинарные данные, используйте следующий пример. В качестве бинарных данных может выступать любой массив байтов (например, байтовое представление картинки или любого другого файла).

// запись в файл бинарной информации (файл перезаписывается) byte[] data = «Бинарные данные».getBytes(); Path fileB = Paths.get(«output.bin»); Files.write(fileB, data);

Для того, чтобы добавить информацию в конец файла, не перезаписывая его полностью, ипользуйте этот код:

// запись в файл бинарной информации (информация добавляется в конец файла) byte[] data2 = «Бинарные данные».getBytes(); Path fileB2 = Paths.get(«output.bin»); Files.write(fileB2, data, StandardOpenOption.APPEND);

Запись текста в файл (Java 6)

Этот код запишет данные в файл (причём если файл существует, данные в нём будут перезаписаны).

// если файл существует, он перезатрётся PrintWriter writer = new PrintWriter(«output.txt», «UTF-8»); writer.println(«Первая строка»); writer.println(«Вторая строка»); writer.close();

Если вам нужно дописать текст в конец файла, используйте следующий код:

// здесь мы допишем информацию в конец файла, если он уже существует PrintWriter writer2 = new PrintWriter((new FileWriter(«output.txt», true))); writer2.println(«Третья строка»); writer2.close();

Для записи бинарных данных в файл в Java 6 используйте следующий код (информация в файле перезапишется):

// запись в файл бинарной информации (файл перезаписывается) OutputStream os = new FileOutputStream(«output.bin»); byte[] data = «какие-то бинарные данные».getBytes(); os.write(data); os.close();

Для добавления бинарных в конец файла в Java используйте следующий код:

// запись в файл бинарной информации (информация добавляется в конец файла) OutputStream osB = new FileOutputStream(«output.bin», true); byte[] dataB = «какие-то бинарные данные».getBytes(); osB.write(dataB); osB.close();

Источники

  • https://java-blog.ru/osnovy/kak-sozdat-fayl-java
  • https://javadevblog.com/kak-sozdat-novyj-fajl-v-java.html
  • https://javascopes.com/java-how-to-create-a-file-6fed373a/
  • https://highload.today/rabota-s-fajlami-v-java-metody-i-konstruktory/
  • https://4java.ru/kak-osushchestvit-zapis-v-fayl-v-java
  • https://java-lessons.ru/files/write-to-file

В этой статье мы рассмотрим различные способы записи текстовой и бинарной информации в файл, используя стандартные API Java.

Запись текста в файл (Java 7 и выше)

Первый способ годится, если вы используете Java 7 и выше. Здесь используется класс Paths, который был добавлен в Java 7. Данный код перезапишет информацию в файле, если тот уже существует.

// запись в файл текстовой информации (файл перезаписывается)
List<String> lines = Arrays.asList("Привет", "Мир");
Path file = Paths.get("output.txt");
Files.write(file, lines, StandardCharsets.UTF_8);

Если же вам нужно добавить текст в конец файла, укажите дополнительную опцию StandardOpenOption.APPEND:

// запись в файл текстовой информации (информация добавляется в конец файла)
List<String> lines2 = Arrays.asList("Привет", "Мир");
Path file2 = Paths.get("output.txt");
Files.write(file2, lines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);

Запись бинарной информации в файл

Если вам требуется записать не текстовые данные, а бинарные данные, используйте следующий пример. В качестве бинарных данных может выступать любой массив байтов (например, байтовое представление картинки или любого другого файла).

// запись в файл бинарной информации (файл перезаписывается)
byte[] data = "Бинарные данные".getBytes();
Path fileB = Paths.get("output.bin");
Files.write(fileB, data);

Для того, чтобы добавить информацию в конец файла, не перезаписывая его полностью, ипользуйте этот код:

// запись в файл бинарной информации (информация добавляется в конец файла)
byte[] data2 = "Бинарные данные".getBytes();
Path fileB2 = Paths.get("output.bin");
Files.write(fileB2, data, StandardOpenOption.APPEND);

Если же вы используете Java 6 ниже, воспользуйтесь следующими примерами.

Запись текста в файл (Java 6)

Этот код запишет данные в файл (причём если файл существует, данные в нём будут перезаписаны).

// если файл существует, он перезатрётся
PrintWriter writer = new PrintWriter("output.txt", "UTF-8");
writer.println("Первая строка");
writer.println("Вторая строка");
writer.close();

Если вам нужно дописать текст в конец файла, используйте следующий код:

// здесь мы допишем информацию в конец файла, если он уже существует
PrintWriter writer2 = new PrintWriter((new FileWriter("output.txt", true)));
writer2.println("Третья строка");
writer2.close();

Для записи бинарных данных в файл в Java 6 используйте следующий код (информация в файле перезапишется):

// запись в файл бинарной информации (файл перезаписывается)
OutputStream os = new FileOutputStream("output.bin");
byte[] data = "какие-то бинарные данные".getBytes();
os.write(data);
os.close();

Для добавления бинарных в конец файла в Java используйте следующий код:

// запись в файл бинарной информации (информация добавляется в конец файла)
OutputStream osB = new FileOutputStream("output.bin", true);
byte[] dataB = "какие-то бинарные данные".getBytes();
osB.write(dataB);
osB.close();

Резюме

В этой статье мы рассмотрели различные способы записи в файл текстовой и бинарной информации. Данные примеры используют стандартные возможности Java и не требуют подключения дополнительных библиотек.

Рассмотрим 12 способов создания файла в Linux.

Эти способы тестировались на дистрибутиве Ubuntu, но будут работать на любой системе Linux.

Создание пустого файла при помощи touch

$ touch filename 

Пояснение: Команда touch предназначена для того, чтобы поменять дату изменения файла на текущую. Однако ее также часто используют для создания файлов.

Создание сразу нескольких пустых файлов при помощи touch

touch file1.txt file2.txt file3.txt

Создание пустого файла при помощи echo

$ echo > filename

Пояснение: Команда echo предназначена для вывода на экран строки, которая в нее передается. Символ > перенаправляет вывод в файл. Соответственно мы перенаправили пустоту в файл.

Трюк для создания пустых файлов

$ > filename

Пояснение: символ > перенаправляет вывод, а мы ничего не выводим, просто перенаправляем пустоту в файл. Это самый короткий способ создать пустой файл.

Или лучше такой пример:

$ : > file

Двоеточие в начале, чтобы случайно не записать вывод предыдущей команды в файл.

Создание файла с содержимым

$ echo '123' > filename

Пояснение: Выводим строку 123 и перенаправляем этот вывод в файл. Файл будет содержать строку 123

Создание файла путем объединения других файлов с помощью cat

$ cat file1 file2 file3 > big_file

Пояснение: Команда cat выводит на экран содержимое на экран, однако мы перенаправляем этот вывод в файл. Соответственно мы создали файл big_file в котором находится содержимое из трех других файлов.

Создание файла с помощью любой команды и символа >

Мы можем создать файл, с помощью команд, которые выводят что-то на экран, записав этот вывод в файл. Например ps aux выводит информацию о текущих процессах в системе. Мы просто можно записать весь вывод этой команды в файл file.txt и потом его проанализировать.

$ ps aux > file.txt

Записываем в файл справку по команде man:

man man > file.txt

Записываем в файл календарь на 2021 год

cal 2021 > 2021.txt

Создание файла при помощи редактора nano

$ nano filename.txt

Этот редактор чуть более привычный простому пользователю, чем Vim, однако он должен быть установлен в вашей системе.

Иначе вы получите ошибку о несуществующей команде Command 'nano' not found.

Проверить установлен ли nano в вашей системе можно с помощью следующей команды:

$ nano --version

Результатом будет информация об установленном редакторе:

GNU nano, version 2.9.3
(C) 1999-2011, 2013-2018 Free Software Foundation, Inc.
(C) 2014-2018 the contributors to nano
Email: nano@nano-editor.org    Web: https://nano-editor.org/
Compiled options: --disable-libmagic --disable-wrapping-as-root --enable-utf8

Либо сообщение об ошибке: Command 'nano' not found

Создание файла при помощи текстового редактора Vim

$ vi filename.txt

Если вы никогда не работали с этим редактором, то этот способ вам не подойдет, т.к. без пары часов за документацией Vim не освоить.

На всякий случай скажу вам способ выйти из этого редактора, т.к. даже это совершенно не очевидно: нажмите Esc, затем : затем введите q! затем нажмите Enter — это способ выхода без сохранения. Для сохранения нужно набрать x! вместо q

Создание файла определенного размера c помощью fallocate

$ fallocate -l 10M hello.txt

Таким образом вы создали файл hello.txt размером 10 мегабайт.

Создание файла определенного размера с помощью dd

$ dd if=/dev/zero of=hello.txt  bs=10M  count=1

Создание файла-сокета c помощью команды mkfifo

$ mkfifo foo.sock

После создания вам нужно установить на него права, чтобы нужные программы могли им пользоваться

Создание файла при помощи HEREDOC

$ cat << EOF > file.txt
> This text is
> added by Here Document
> EOF

Пояснение: мы сначала пишем cat << EOF > file.txt причем вместо EOF может быть любая строка, которой нет в тексте, который мы собираемся написать. Затем когда мы завершили заполнение многострочного файла, просто переходим на следующую строку и вводим EOF. В итоге содержимое нашего файла будет:

This text is
added by Here Document

Спасибо за внимание! Если вы знаете какой-нибудь интересный и полезный способ создания фалов — напишите его в комментариях.

Нашли опечатку или ошибку? Выделите её и нажмите Ctrl+Enter

Помогла ли Вам эта статья?

Понравилась статья? Поделить с друзьями:
  • Как найти три решения неравенства
  • Как найти самый темный цвет в игре
  • Как исправить поврежденный файл ворд
  • Как найти свойство моего компьютера
  • Как найти мастер активации