Как записать объект в файл java

Обновлено: 03.07.2024

Работа с файлами в Java. Класс File . Основные методы работы

В данной теме расписаны базовые методы класса File , который есть частью системы ввода/вывода Java. Для рассмотренных методов приведены примеры с объяснениями.

Содержание

  • 1. Создание экземпляра класса File . Конструкторы класса
  • 2. Метод getName() . Получить имя файла или каталога
  • 3. Метод getPath() . Получить имя файла
  • 4. Метод isAbsolute() . Определить, указан ли полный путь к файлу
  • 5. Метод getAbsolutePath() . Получить полный путь к файлу
  • 6. Методы canRead() , canWrite() . Определение того, допускает ли файловый объект чтение и запись
  • 7. Метод exists() . Определение наличия файла (каталога)
  • 8. Метод isDirectory() . Определить, связан ли файловый объект с директорием
  • 9. Метод isFile() . Определить, связан ли файловый объект с файлом
  • 10. Метод isHidden() . Определить, есть ли файловый объект скрытым
  • 11. Метод length() . Определить размер в байтах файла, который связан с файловым объектом
  • 12. Метод delete() . Удаление файла
  • 13. Метод mkdir() . Создание папки или каталога
  • 14. Метод mkdirs() . Создание нескольких вложенных папок
  • 15. Метод renameTo() . Переименование файла
  • 16. Метод getTotalSpace() . Определение объема диска
  • 17. Метод getFreeSpace() . Определить свободное место на диске
  • 18. Метод getUsableSpace() . Определение полезного места на диске

Поиск на других ресурсах:

1. Создание экземпляра класса File . Конструкторы класса

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

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

Также существуют конструкторы, формирующие имя файла из нескольких частей.

Пример.

Результат выполнения программы

2. Метод getName() . Получить имя файла или каталога

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

  • name – переменная типа String , которая есть результатом выполнения метода;
  • fileObj – файловый объект, связанный с файлом или каталогом.

Пример.

  • path – строка типа String , что есть именем файла (каталога), которое было задано при создании файловой переменной fileObj .

Пример.

4. Метод isAbsolute() . Определить, указан ли полный путь к файлу

Метод isAbsolute() позволяет определить, указан ли полный путь к файлу при создании файлового объекта в конструкторе класса File . Общая форма использования метода следующая

  • res – результат, который равен true , если при создании файловой переменной fileObj был задан абсолютный путь.

Пример.

5. Метод getAbsolutePath() . Получить полный путь к файлу

Метод getAbsolutePath() возвращает полный путь к файлу. Общая форма использования метода следующая

  • path – строка типа String , которая есть результатом;
  • fileObj – файловый объект, который связан с файлом, для которого нужно определить абсолютный путь.

Пример.

Результат работы программы

7. Метод exists() . Определение наличия файла (каталога)

Метод exists() предназначен для определения существования файла, ассоциированного с файловым объектом. Общая форма использования метода следующая

  • res – результат работы метода. Если res = true , то заданный файл существует;
  • fileObj – объект, который проверяется.

Пример.

8. Метод isDirectory() . Определить, связан ли файловый объект с директорием

Метод isDirectory() предназначен для определения того, есть ли файл директорием (папкой). Общая форма использования метода следующая

  • res – значение типа bool . Если res=true , то файл есть директорием;
  • fileObj – файловый объект, который проверяется.

Пример.

9. Метод isFile() . Определить, связан ли файловый объект с файлом

Метод isFile() возвращает true , если файловый объект связан с файлом. Общая форма использования метода следующая

  • res – результат вычисления. Если файловый объект есть файлом, то res = true ;
  • fileObj – файловый объект.

Пример.

10. Метод isHidden() . Определить, есть ли файловый объект скрытым
  • fileObj – файловый объект;
  • res – результат работы метода. Если res = true , то файловый объект связан со скрытым файлом.

Пример.

11. Метод length() . Определить размер в байтах файла, который связан с файловым объектом

Метод length() предназначен для определения размера файла и имеет следующую общую форму

Пример.

Результат работы программы

12. Метод delete() . Удаление файла

Метод delete() используется для удаления файла. Общая форма использования метода

  • fileObj – файловый объект, который связан с файлом, который нужно удалить;
  • res – результат выполнения метода. Если res = true , то удаление файла состоялось успешно.

Пример.

13. Метод mkdir() . Создание папки или каталога

Метод mkdir() используется для создания папки (каталога). Общая форма использования метода следующая

  • res – результат типа bool . Если каталог создан успешно, то res = true , в противном случае res = false ;
  • fileObj – объект типа File , который связан с именем создаваемого каталога.

Пример. Создается каталог с именем 123 в текущем каталоге.

Результат работы программы

14. Метод mkdirs() . Создание нескольких вложенных папок

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

Общая форма использования метода следующая:

  • fileObj – файловый объект, который содержит строку с именем или именами папок, которые нужно создать;
  • res – результат выполнения метода. Если последовательность папок создана успешно, то res = true .

Пример.

15. Метод renameTo(File). Переименование файла

Метод renameTo() предназначен для переименования файла. Общая форма использования метода следующая

  • res – результат выполнения метода. Если файл переименован успешно, то res = true , иначе res = false ;
  • f1 – файловая переменная, соответствующая файлу-источнику, который нужно переименовать;
  • f2 – файловая переменная, соответствующая новому имени файла-источника f1 после его переименования.

Пример.

16. Метод getTotalSpace() . Определение объема диска

С помощью метода getTotalSpace() можно определить общий размер носителя (диска) в байтах. Метод возвращает результат типа long . Общая форма использования метода следующая

Как реализовать запись объектного Array List в файл: txt или xml. Пожалуйста, разъясните это на конкретных примерах. Делаю курсовую по ООП на Java. Имеется следующий код:

Класс User отвечает за создание самого объекта типа User.

В классе Users создаётся объектный ArrayList для User. Для дальнейшего динамического использования. Вывод через байтовый поток.

Проблема заключается в том, что после добавление конструктора.

Для создание экземпляра Users users = new Users(); (который мы потом записываем файл в методе SaveUser(), так же он используется в меню для вызова функций добавления, удаления и вывода всех пользователей) вылезает такая ошибка:

constructor Users in class Users cannot be applied to given types; required: ArrayList,int found: no arguments reason: actual and formal argument lists differ in length

Я не понимаю какие формальные параметры использовать.. для этого экземпляра. И будет ли потом программа правильно выполнять сериалилизацию моего списка с объектами User, а не сам пустой список.

Первый раз слышу о таком, но как я понял из разряда стиля программирования. Я учусь на 2 курсе, основной язык у нас с++, но курсовую можно было выбрать на любом ооп языке, я склонился к java, потому что java интуитивнее, так-как память полностью управляется jvm. И к тому же большинство своего свободного времени я отдаю музыке. GenCloud а какой смысл в файл записывать имена ссылок?Если мы возьмем с ArrayList<User> объект user и запишем таким образом,как показано в твоей ссылке,то запишутся название ссылок,а не объекты @Sckoriy , это один из примеров того как можно записать коллекцию в файл, а не готовое решение. А если еще ниже посмотреть, то для особо одаренных написано, что можно использовать объектные потоки ввода/вывода

Для того,чтобы записать класс Users со всеми его переменными экземпляра,вам нужно использовать сериализацию объекта. Сериализация - это как бы записанный(сжатый) объект.Вот представьте себе надувную фигуру. Вы можете спустить надувную фигуру и положить в коробку,например.А если бы вы этого не сделали,то надутая фигура вряд-ли поместиться в маленькую коробочку.

Спустить фигуру и положить в коробку - Сериализация

Вытянуть фигуру и надуть её - ДИсериализация

Как бы,можно сохранить данные объекта(состояние,переменные экземпляры) в txt и сделать конструктор,чтобы передавать построчно параметры для НОВОГО объекта.Но вам нужно другое. Именно "сдуть" объект и положить в файлик.Сделать это можно следующим образом :

Класс Объекта,который будут спускать(сериализовать) должен реализовать интерфейс Serializable

А теперь внимательно!

Для того,чтобы сериализовать объект со всеми его полями(переменными экземпляра) НУЖНО чтобы все его объектные ссылки тоже реализовали интерфейс Serializable

Большинство классов за вас уже реализуют интерфейс Serializable,а некоторые не могут вообще.

Для того,чтобы записать объект Users в файл,нам нужно использовать потоки поток соединения - простой байтовый поток(FileInputStream(входящий) , FileOutputStream(исходящий).

И потоки,в которые мы будем впихать объекты,а там они будут сжиматься или надуваться : ObjectInputStream(входящий-надуваем) ObjectOutputStream(Исходящий-сдуваем).

В данном примере я записал в файл объект Users , который содержит ArrayList Ибо,если вы запишете только ArrayList users объект в файл,то какая от этого польза,Если у вашем классе Users нету конструктора или какого-то метода,чтобы принимал объект ArrayList users.

А все нужные вам методы находятся в классе Users. Чтобы был смысл записывать ArrayList нужно сделать следующее:


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

Какие проблемы мы будем решать в этом уроке?

Подготовительные работы

Создадим простой проект, не обязательно Maven проект, так как нам не потребуется не каких дополнительных библиотек.

После того как вы создали проект, создайте класс WorkInFile.java и напишите туда стандартную конструкцию main:

Теперь создадим класс который будет иметь методы для работы с файлами, а назовем его FileWorker.java все методы в нем которые не есть private будут статическими для того чтобы мы получали к ним доступ без экземпляра этого класса.

Как записывать в файл?

В классе FileWorker.java создадим статический метод который будет осуществлять запись в файл и назовем этот метод write(String text; String nameFile):

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

2. Как читать файл?

Теперь в классе FileWorker создадим метод для чтения файла, также статический:

Также если файла нет то метод выкинет Exception.

Для проверки на существование файла создадим метод, так как нам еще потребуется эта проверка в следующих методах:

Теперь проверим его:

В первом случае когда файл не существует мы получим это:

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

3. Как обновить файл?

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

Давайте создадим метод update в классе FileWorker:

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

В результате обновления файла:

4. Как удалить файл?

В тот же наш утилитный класс FileWorker добавим метод delete, он будет очень простым так как у объекта File уже есть метод delete():

Чтобы работать с файлами, есть шикарный утилитный класс — java.nio.file.Files . У него есть методы просто на все случаи жизни. Все методы этого класса статические и работают с объектами типа Path. Методов очень много, поэтому мы рассмотрим только основные:

Метод Описание
Создает новый файл с путем path
Создает новую директорию
Создает несколько директорий
Создает временный файл
Создает временную директорию
Удаляет файл или директорию, если она пуста
Копирует файл
Перемещает файл
Проверяет, что путь — это директория, а не файл
Проверяет, что путь — это файл, а не директория
Проверяет, что объект по заданному пути существует
Возвращает размер файла
Возвращает все содержимое файла в виде массива байт
Возвращает все содержимое файла в виде строки
Возвращает все содержимое файла в виде списка строк
Записывает в файл массив байт
Записывает в файл строку
Возвращает коллекцию файлов (и поддиректорий) из заданной директории

2. Создание файлов и директорий

Файлы и директории создавать очень просто. Убедимся на примерах:

Код Примечание
Создает файл
Создает директорию
Создает директорию и все нужные поддиректории, если их не существует.

3. Копирование, перемещение и удаление

Копировать, перемещать и удалять файлы так же легко. На директории это тоже распространяется, но они должны быть пустые.

Код Примечание
Копирует файл
Перемещает и переименовывает файл
Удаляет файл

4. Проверка типа файла и факта существования

Когда у вас есть какой-то путь, полученный извне, вы бы хотели знать, это файл или директория. Ну и вообще: существует такой файл/директория или нет?

Для этого тоже есть специальные методы. Так же можно легко узнать длину файла:

Код Примечание

5. Работа с содержимым файла

И наконец, есть целая серия методов, которые позволяют легко прочитать или записать содержимое файла. Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, никогда не изменится.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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. Настройка

В примерах мы определим константу для имени файла:

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

@AfterEach @BeforeEach public void cleanUpFiles()

3. Использование файлов NIO.CreateFile()

Давайте начнем с , используяFiles.CreateFile()метод из пакета Java NIO:

@Test public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException

Как вы можете видеть, код по-прежнему очень прост; теперь мы используем новый Путь интерфейс вместо старого Файла .

Здесь следует отметить, что новый 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

Обратите внимание, что файл не должен существовать, чтобы эта операция прошла успешно. Если файл действительно существует, то операция 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

7. Использование Apache Commons IO

Библиотека Apache Commons предоставляет Файлы.прикасаться() метод, реализующий то же поведение, что и ” прикасаться “утилита в Linux.

Поэтому он создает новый пустой файл или даже файл и полный путь к нему в файловой системе:

@Test public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException

Обратите внимание, что это ведет себя немного иначе, чем в предыдущих примерах: если файл уже существует, операция не завершается неудачно, она просто ничего не делает.

И вот он у нас – 4 быстрых способа создания нового файла на Java.

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

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

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

Методы класса 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() для получения детального перечня того, что внутри:

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

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

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

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

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

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

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

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

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

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

Рефакторинг

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: