Добавить в файл в Java
Обновлено: 21.11.2024
Иногда нам нужно добавить текст в файл в Java вместо создания нового файла. К счастью, Java File API очень богат и предоставляет несколько способов добавления текста в файл на Java. Ранее мы видели, как создавать файлы и каталоги на Java и как читать и писать в текстовый файл на Java, а в этом руководстве по Java IO мы увидим, как добавлять текст в файлы на Java. Мы собираемся использовать стандартный подход FileWriter и BufferedWriter для добавления текста в файл. Одним из ключевых моментов, который следует помнить при использовании FileWriter в Java, является инициализация FileWriter для добавления текста, то есть записи байтов в конце файла, а не записи в начале файла.
В следующем разделе мы увидим полную программу Java для добавления текста в файл на Java. Кстати, вы также можете использовать FileOutputStream вместо FileWriter, если хотите писать байты вместо текста.
Подобно FileWriter , конструктор FileOutputStream также принимает логический аргумент добавления, чтобы открыть соединение для добавления байтов в файл в Java.
Программа Java для добавления текста в файл на Java с помощью FileWriter
В этом разделе мы увидим полнофункциональную программу Java, которая добавляет текст в конец файла. В этой программе мы использовали FileWriter и инициализировали его как true . Для повышения производительности мы обернули FileWriter в BufferedWriter, аналогично обертке FileInputStream в BufferedReader для чтения файла построчно в Java.
Поскольку это тестовая программа, мы не заблокировали окончательно, чтобы закрыть соединение, а также вместо обработки исключения мы бросили их, чтобы код оставался простым и читабельным. В рабочем коде всегда следует закрывать соединение с файлом в блоке finally и быть готовым к обработке исключений FileNotFoundException и IOException в Java.
импортировать java.io.BufferedWriter ;
импортировать java.io.File ;
import java.io.FileNotFoundException ;
импортировать java.io.FileWriter ;
импортировать java.io.IOException ;
/**
* Простая программа на Java для добавления содержимого и текста в файл.
* Для добавления можно использовать либо поток байтов, либо метод чтения символов
* В реальном мире вы должны обращаться с ними правильно.
*
* @author Джавин Пол
*/
открытый класс FileAppendTest
public static void main ( String args []) генерирует исключение FileNotFoundException, IOException <
//имя файла, к которому будет добавлен текст,
//текущий файл содержит только одну строку
//как "Эти данные предшествуют любому тексту, добавленному в файл."
Путь к строке = "C:/sample.txt" ;
//создание файлового объекта по заданному пути
Файл файл = новый файл ( путь ) ;
//FileWriter второй аргумент для добавления, если он истинен, то FileWritter будет
//записывать байты в конец файла (добавлять), а не в начало файл
FileWriter fileWriter = новый FileWriter ( файл, правда ) ;
//Используйте BufferedWriter вместо FileWriter для повышения производительности
BufferedWriter bufferFileWriter = new BufferedWriter (fileWriter) ;
ФайлЗапись. append("Этот текст должен быть добавлен в файл формы Java-программы" );
//Не забудьте закрыть Streams или Reader, чтобы освободить связанный с ним FileDescriptor
bufferFileWriter. закрыть () ;
Система. вне . println("Программа Java для добавления содержимого в файл завершена");
Вывод:
Исходное содержимое файла: эти данные до того, как какой-либо текст будет добавлен в файл.
Измененное содержимое файла: эти данные предшествуют любому тексту, добавленному в файл. Этот текст должен быть добавлен в форме файла Java-программа. Вы также можете добавлять содержимое или байты с помощью FileOutputStream, FileOutputStream (строковый путь, логическое добавление) принимает логический параметр для добавления в файл, что гарантирует, что новые байты будут записаны в конце файла, а не в начале файла.
Это все о том, как добавить текст в файл в Java. Это довольно простая Java-программа, в которой нужно помнить только об одном: инициализация FileWriter с логическим добавлением как true, чтобы FileWriter записывала содержимое в конец файла, а не в начало файла.
В предыдущем руководстве вы узнали, как записывать данные в файл на языке Java, а в этом руководстве вы узнаете, как добавлять текст в файл на языке Java. В чем разница между простой записью в файл и добавлением данных в файл? В случае записи в файл программа может начать запись с самого начала, но в случае добавления текста вы начинаете запись с конца файла. Вы можете добавить текст в существующий файл в Java, открыв файл с помощью класса FileWriter в режиме добавления. Вы можете сделать это с помощью специального конструктора класса FileWriter, который принимает файл и логическое значение, которое, если передано как true, открывает файл в режиме добавления.
Это означает, что вы можете добавить новый контент в конец файла. Одним из распространенных примеров добавления текста в файл является ведение журнала, но для этого вам не нужно писать собственный регистратор, в мире Java доступно несколько хороших библиотек ведения журнала, например. Log4j, SLF4j, Logbak и даже java.util.logging достаточно хороши.
В этом руководстве вы узнаете, как добавить данные в существующий текстовый файл из программы Java. Как я уже говорил ранее, если вы начинаете с нуля в Java, я предлагаю вам лучше следовать книге, потому что она дает исчерпывающий охват, а это означает, что вы можете узнать много нового за короткое время.
Вы можете ознакомиться с основными книгами по Java Кэя С. Хорстманна или Java: руководство для начинающих Герберта Шильдта. Обе книги очень хороши и настоятельно рекомендуются новичкам в Java. Положительным моментом в руководстве для начинающих является то, что оно также охватывает Java 8, в то время как основная версия Java 9th Edition охватывает только Java 7.
Программа Java для добавления текста в существующий файл
Вот наш полный пример Java, демонстрирующий, как добавить текст в файл в Java. В этой программе показан пример использования как кода Java SE 6, так и кода Java SE 7 с использованием новой функции оператора try-with-resource для автоматического закрытия ресурса.
В обоих примерах ключевым моментом для понимания является открытие файла с помощью FileWriter в режиме добавления. Для этого существует специальный конструктор, который принимает логический аргумент для открытия файла в режиме добавления.
FileWriter — это класс из пакета java.io для записи данных в файл по одному символу за раз, как мы видели ранее, FileWriter лучше обернуть внутри BufferedWriter и PrintWriter для эффективной и удобной записи в файл.
В этой программе у нас есть файл с именем names.txt, который находится в корне пути к классам внутри каталога проекта Eclipse IDE. Этот файл содержит два имени в начале, и после того, как мы запустим нашу программу, к нему будет добавлен следующий набор имен, например. добавляется в конец файла.
Поскольку мы делаем добавление два раза, сначала с использованием кода Java 6, а затем с использованием кода Java SE 7, вы увидите пару имен, добавленных к файлу.
Файл после добавления текста:
Джеймс
ХобертШейн
Рут
Бен
добавление текста в файл
/>Гаура
Бори
Из вывода видно, что наша программа работает должным образом. В первом примере Шейн добавлен рядом с Хобертом, потому что там не было новой строки. Позже, поскольку мы использовали PrintWriter , символы новой строки, например. \n автоматически добавляются после каждой строки.
Этапы добавления текста в файл в Java 6
- Откройте файл, в который вы хотите добавить текст, с помощью FileWriter в режиме добавления, передав true
- Оберните FileWriter в BufferedReader, если вы собираетесь писать большой текст
- Оберните PrintWriter, если вы хотите каждый раз писать с новой строки
- Закройте FileWriter в блоке finally, чтобы избежать утечки файловых дескрипторов.
Шаги по добавлению данных в существующий файл в Java 7
- Используйте оператор try-with-resource для открытия ресурсов, например FileWriter , BufferedWriter и PrintWriter
- Просто напишите содержимое, используя метод println() программы PrintWriter.
- Ресурс будет закрыт автоматически, когда элемент управления покинет блок try. Если в блоке try возникнет какое-либо исключение, оно будет подавлено.
Это все о том, как добавить текст в существующий файл в Java. Вы можете использовать FileWriter, чтобы открыть файл для добавления текста, а не для написания текста. Разница между ними в том, что когда вы добавляете данные, они добавляются в конец файла. Поскольку FileWriter записывает по одному символу за раз, для эффективной записи лучше использовать класс BufferedWriter. Вы также можете использовать PrintWriter, если хотите использовать его удобные методы print() и println() для записи строк в файл, но нет необходимости писать текст в конце файла.
Учебное пособие по добавлению в файл по Java показывает, как добавлять в файл в Java. Мы используем FileWriter , FileOutputStream , Files , RandomAccessFile , Google Guava и Apache Commons IO.
Добавление к файлу часто используется при ведении журнала.
В примерах мы добавляем текст к файлам.
Мы используем этот текстовый файл. Он находится в каталоге src/main/resources.
Присоединение Java к файлу с помощью FileWriter
Класс FileWriter используется для записи потоков символов. FileWriter принимает необязательный второй параметр: append . Если установлено значение true, данные будут записываться в конец файла.
В этом примере данные добавляются в файл с помощью FileWriter .
Присоединение Java к файлу с помощью FileOutputStream
FileOutputStream — это выходной поток для записи данных в файл или в FileDescriptor . Он принимает необязательный второй параметр, который определяет, добавляются ли данные в файл.
В этом примере данные добавляются в файл с помощью FileOutputStream .
Присоединение Java к файлу с помощью файлов
В Java 7 появился класс java.nio.file.Files, который можно использовать для простого добавления данных в файл.
В этом примере данные добавляются с помощью файлов .
Четвертый параметр Files.writeString сообщает, как файл был открыт для записи. С помощью StandardOpenOption.APPEND файл был открыт для добавления.
Java добавляет в файл с помощью RandomAccessFile
RandomAccessFile используется для чтения и записи в файл с произвольным доступом.
В этом примере мы добавляем данные с помощью RandomAccessFile .
Мы определяем длину файла, переходим в конец файла и записываем байты.
Присоединение Java к файлу с помощью Guava
Мы можем использовать библиотеку Guava для добавления в файл.
Нам нужна эта зависимость от Guava.
В этом примере мы добавляем к файлу класс Guava CharSink.
Третий параметр Files.asCharSink указывает режим записи файла; с опцией FileWriteMode.APPEND файл открывается для записи.
Присоединение Java к файлу с помощью Apache Commons IO
В последнем примере мы используем Apache Commons IO для добавления в файл.
Нам нужна эта зависимость.
Мы добавляем к файлу метод FileUtils.writeStringToFile. Последний параметр добавления определяет, нужно ли добавлять к файлу.
В этом руководстве мы показали, как добавить в файл Java с помощью встроенных инструментов и сторонних библиотек.
В этом руководстве рассказывается, как добавить текст в существующий текстовый файл в Java. Мы также привели несколько примеров кодов, которые помогут вам лучше ориентироваться.
Чтение и запись — две самые основные операции, которые вы можете выполнять при работе с файлами. В Java существует несколько способов записи или добавления данных в файл. В этой статье мы узнаем о четырех различных способах добавления в текстовый файл.
Добавление текста в текстовый файл с помощью класса FileOutputStream в Java
Класс FileOutputStream используется для записи двоичных данных в файлы. В основном это предпочтительнее для примитивных типов данных, таких как int или float , но его также можно использовать для записи символьных данных.
Перед записью строку необходимо преобразовать в массив байтов; для этой цели вы можете использовать метод getBytes(). Нам также нужно передать true в качестве второго аргумента его конструктору. Этот второй аргумент предназначен для логического флага добавления, и он сделан, чтобы указать, что мы пытаемся добавить существующий файл.
Если его игнорировать, класс FileOutputStream перезапишет содержимое файла. Он создаст новый файл, если файл еще не присутствует в указанном месте.
Вот пример, где мы пытаемся добавить предложение Быстрая коричневая лиса прыгает через ленивую собаку к существующему файлу. \r и \n используются для вставки текста в начале новой строки.
Добавление текста в текстовый файл с помощью класса FileWriter в Java
Класс Java FileWriter предназначен для записи потоков символов в файл. Мы можем использовать его для добавления символов или строк в существующий или новый файл. Если файл отсутствует по указанному пути, то создается новый файл, и данные записываются в этот новый файл.
В отличие от предыдущего класса FileOutputStream, нам не нужно преобразовывать строки в байты перед записью. Однако нам также необходимо передать true в качестве второго аргумента конструктору FileWriter, который указывает, что мы пытаемся добавить существующий файл.
Если его не указать, существующее содержимое файла будет перезаписано. Следующий код демонстрирует, как мы можем добавить одну строку в существующий файл с помощью FileWriter .
Добавление текста в текстовый файл с помощью класса BufferedWriter в Java
Класс FileWriter часто используется другими средствами записи, такими как BufferedWriter . Этот процесс выполняется потому, что BufferedWriter намного эффективнее, чем FileWriter .
BufferedWriter предпочтительнее, чем FileWriter, когда у нас есть несколько операций записи. Он использует внутреннюю буферную память для хранения данных, которые должны быть добавлены в файл. Когда этот буфер заполнен или нам больше нечего добавлять, BufferedWriter будет записывать в фактический файл.
Он записывает большие порции данных в файл из своего буфера вместо частой записи в него; это приводит к меньшим системным вызовам. Поэтому он намного эффективнее обычного FileWriter.
Но если у нас есть одна операция записи, то BufferedWriter добавляет еще один шаг в процессе записи. Так что лучше просто использовать FileWriter .
Чтобы использовать BufferedWriter, нам сначала нужен объект FileWriter, который мы передаем конструктору BufferedWriter. Обязательно используйте true для флага добавления.
Следующий код демонстрирует работу BufferedWriter в Java.
Добавление текста в текстовый файл с помощью класса Files в Java
Вспомогательный класс Files был добавлен в Java 7 и предоставляет еще один способ записи данных в файлы; для этого мы используем метод Files.write(). Для этого метода требуется путь к файлу, а также необходимо добавить массив байтов строки.
Нам также нужно указать StandardOpenOption.APPEND, чтобы добавить текст в существующий файл. Убедитесь, что файл присутствует по указанному пути; в противном случае будет возвращено исключение NoSuchFileException .
Этот метод не является предпочтительным, если нам нужно несколько раз записывать в один и тот же файл, потому что файл также будет открываться и закрываться несколько раз, что снижает общую производительность.
В следующем коде показано, как работает метод Files.write() в Java I/O.
Добавление текста в текстовый файл в Java
Java предоставляет несколько вариантов обработки файлов. Мы можем добавлять данные в файл с помощью FileOutputStream , FileWriter , BufferedWriter или служебного класса Files.
Для служебных классов FileOutputStream и Files нам сначала нужно преобразовать строку в массив байтов, а затем передать его методу write().
BufferedWriter предпочтительнее, когда нам нужно несколько раз записать небольшой объем данных в один и тот же файл. С другой стороны, служебные классы FileWriter и Files будут выполнять несколько системных вызовов для большого количества операций записи; это снижает их общую производительность.
Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».
Часто случается, что файл с некоторым содержимым уже существует, и вам нужно добавить (или добавить) к нему некоторый текст.
К счастью, java предоставляет множество методов для добавления текста в уже существующий файл без его повторного создания.
В этой статье мы обсудим 7 из этих методов.
Метод 1: Использование FileWriter
java.io.FileWriter имеет метод write(), который принимает строковый аргумент.
Этот строковый аргумент представляет собой содержимое, которое будет записано в файл.
FileWriter имеет конструктор, который принимает 2 аргумента:
во-первых, путь к файлу и
во-вторых, логическое значение. Если это значение равно true , то файл открывается в режиме добавления, а если false , то файл будет открыт в режиме записи.
Если файл не открыт в режиме добавления, он будет перезаписан. Пример,
Способ 2. Использование BufferedWriter
java.io.BufferedWriter также можно использовать для добавления в файл с помощью базового объекта FileWriter.
Создайте FileWriter в режиме добавления, как описано в предыдущем методе, и передайте его объекту BufferedWriter. Пример,
Способ 3. Использование PrintWriter
java.io.PrintWriter принимает объект BufferedWriter, который, в свою очередь, создается с использованием объекта FileWriter, как показано в предыдущем примере.
FileWriter создается в режиме добавления, поэтому PrintWriter можно использовать для добавления в файл. Пример,
Метод 4: Использование класса Files
Класс java.nio.file.Files имеет метод write(). Этот метод принимает 3 аргумента:
Во-первых, объект java.nio.file.Path, представляющий путь к файлу, к которому нужно получить доступ,
во-вторых, массив байтов, состоящий из содержимого, которое нужно записать, и,
в-третьих, объект введите java.nio.file.OpenOption, который представляет режим, в котором файл будет открыт.
Пример
java.nio.file.StandardOpenOption — это перечисление, которое реализует java.nio.file.OpenOption со значениями, такими как READ , WRITE , APPEND em> и т. д.
Эти значения представляют режим, в котором файл будет открыт.
Во-первых, объект java.io.File, указывающий на файл, который нужно записать,
во-вторых, строка, представляющая содержимое, которое должно быть добавлено к файлу, и
в-третьих, логическое значение стоимость. Значение true означает, что файл будет открыт в режиме добавления, а значение false означает, что файл будет в режиме записи.
Если файл не открыт в режиме добавления, он будет перезаписан. Пример,
Чтобы этот метод работал, вам необходимо добавить библиотеку Apache Commons в путь к классам вашего приложения.
Способ 6. Использование Guava
Библиотеку Guava также можно использовать для добавления в файл, как показано в приведенном ниже примере кода.
Класс Files в библиотеке Guava имеет статический метод asCharSink, который принимает три аргумента:
Во-первых, файловый объект, указывающий на добавляемый файл,
во-вторых, набор символов, в котором будет добавляться текст, и
в-третьих, режим записи, который в данном случае будет добавляться . Это указано как перечисление java FileWriteMode .
Чтобы добавить библиотеку Guava в свой проект, используйте следующую зависимость в соответствии с инструментом сборки.
// Gradle
группа компиляции: ‘com.google.guava’, имя: ‘guava’, версия: ‘23.0’
Метод 6: Чтение содержимого файла
Это традиционный метод добавления текста в файл, при котором все содержимое файла сначала считывается в буфер, а добавляемый текст добавляется в этот буфер.< /p>
Наконец, этот буфер записывается в тот же файл с использованием любого из методов записи файлов в java.
Пример,
Этот метод сначала считывает файл построчно в java.lang.StringBuffer .
Когда все содержимое прочитано, в этот буфер добавляется текст, который будет добавлен к файлу.
Затем этот буфер записывается в файл с помощью java.io.FileWriter .
Этот метод не является оптимизированным способом добавления текста в файл, поскольку он сначала считывает весь файл и, следовательно, включает больше операций ввода-вывода по сравнению с другими методами.
Кроме того, общее количество строк кода в этом методе также больше по сравнению с другими методами.
Не забудьте нажать на хлопочек, если статья оказалась полезной.
Читайте также: