Добавление текста в существующий файл в Java
На протяжении всего процесса изучения Java, часто возникает необходимость добавить текст в уже существующий файл. Это может потребоваться, например, при записи логов, когда необходимо сохранить информацию о каждом запуске программы, не удаляя предыдущую.
В Java есть несколько способов добавить текст в существующий файл. Рассмотрим самые простые из них.
Использование класса FileWriter
Один из способов — использовать класс FileWriter . Этот класс представляет символьный поток записи и имеет различные конструкторы. Например, FileWriter(String fileName, boolean append) принимает имя файла и булево значение. Если значение append равно true , то данные будут записываться в конец файла, а не перезаписываться.
FileWriter writer = new FileWriter("example.txt", true); writer.write("New Text\n"); writer.close();
В этом примере создается новый FileWriter для файла example.txt , в который записывается строка «New Text». После записи, поток записи закрывается.
Использование класса BufferedWriter
Вместо FileWriter можно использовать BufferedWriter . BufferedWriter обеспечивает буферизованный символьный поток записи.
BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt", true)); writer.append(' '); writer.append("New Text"); writer.close();
В этом примере создается BufferedWriter , который оборачивает FileWriter . В файл example.txt сначала добавляется пробел, а затем строка «New Text». После записи, поток записи закрывается.
Использование класса Files
Еще один способ — использовать класс Files и его метод write() . Этот метод записывает последовательность символов или байтов в файл.
Files.write(Paths.get("example.txt"), "New Text".getBytes(), StandardOpenOption.APPEND);
В этом примере к файлу example.txt добавляется строка «New Text».
Важно помнить, что при работе с потоками записи важно их закрывать, чтобы освободить ресурсы. Это можно сделать с помощью метода close() или использовать конструкцию try-with-resources.
Запись строк в файл
Программа должна записать все введенные строки (включая «exit», но не включая имя файла) в файл: каждую строчку — с новой строки.
Метод main должен закрывать объект типа BufferedWriter после использования.
Метод main не должен выводить данные на экран.
Solution.java
- Solution.java
package com.javarush.task.task13.task1319; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.FileOutputStream; import java.io.BufferedWriter; import java.io.FileWriter; import java.util.ArrayList; import java.io.OutputStreamWriter; /* Писатель в файл с консоли */ public class Solution < public static void main(String[] args) throws Exception < BufferedReader x= new BufferedReader(new InputStreamReader(System.in)); String e=""; ArrayList
Как добавить текст в конец файла в Java?
Есть текстовый файл, в котором уже хранится какая-то информация. Как дописать в файл данные, если метод write класса FileWritter затирает старые данные и пишет новые?
Отслеживать
5,185 3 3 золотых знака 23 23 серебряных знака 48 48 бронзовых знаков
задан 4 ноя 2015 в 15:53
708 4 4 золотых знака 10 10 серебряных знаков 22 22 бронзовых знака
Ключевое слово — append. Посмотрите его в документации на средства, которыми вы открываете/пишете файл.
4 ноя 2015 в 16:33
try(FileWriter writer = new FileWriter(«E://Count.txt»)) < String text = "some text"; writer.append(text); >. такой код затирает файл
4 ноя 2015 в 16:44
Открываете документацию на FileWriter, ищете в ней слово append. PROFIT!
4 ноя 2015 в 16:53
append(char c ) Appends the specified character to this writer. Т.е. это работает так: мы уже записали что-то в файл , и потом в конец добавили сhar С например : FileWriter writer = new FileWriter(«E://Count.txt») writer.write(«some text»); writer.append(«X»); будет some textX, а мне нужно что бы в существующий файл дописывало
4 ноя 2015 в 17:19
За что вопрос закрыли-то?
4 ноя 2015 в 18:14
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Метод 1:
Один из вариантов — использовать метод write класса Files:
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class Main < public static void main(String[] args) < String filePath = "/home/user/Desktop/project/src/myfile.txt"; String text = "Hello world!\n"; try < Files.write(Paths.get(filePath), text.getBytes(), StandardOpenOption.APPEND); >catch (IOException e) < System.out.println(e); >> >
Метод 2:
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class Main < public static void main(String[] args) < String filePath = "/home/user/Desktop/project/src/myfile.txt"; String text = "Hello world!\n"; try < FileWriter writer = new FileWriter(filePath, true); BufferedWriter bufferWriter = new BufferedWriter(writer); bufferWriter.write(text); bufferWriter.close(); >catch (IOException e) < System.out.println(e); >> >
Отслеживать
ответ дан 4 ноя 2015 в 21:26
5,185 3 3 золотых знака 23 23 серебряных знака 48 48 бронзовых знаков
cпасибо! Не пойму ток что означает символ ‘\n’?
4 ноя 2015 в 22:32
@ketchyn, это переход на новую строку. Пожалуйста.
4 ноя 2015 в 22:55
public FileWriter(String fileName, boolean append) throws IOException
Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written.
Parameters:
fileName — String The system-dependent filename.
append — boolean if true, then data will be written to the end of the file rather than the beginning.
Не то?
Отслеживать
ответ дан 4 ноя 2015 в 17:39
6,300 1 1 золотой знак 12 12 серебряных знаков 18 18 бронзовых знаков
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как создать файл в Java
Создание нового файла в Java не такое уж сложное дело. Эта статья поможет новичкам научиться, как создать и записать новый файл в Java.
Сначала научимся, как создать новые файлы в Java.
Есть много способов для этого, но в этой статье мы расскажем о трех способах создания файла.
Используйте класс java.io.File
При установлении объекта File вы указываете название файла и дальше используйте метод createNewFile(), который атомарно создает новый пустой файл с названием абстрактного пути, но только в случае, если файл с таким названием не существует.
Данный метод возвращает true, если названный файл не существует и был успешно создан. Возвращает false, если файл существует. Он также создает java.io.IOException, когда не может создать файл. Созданный файл пуст и имеет нулевой байт.
Данный метод не должен быть использован для блокировки файлов, так как протокол, созданный в результате этого, не может надежно работать.
Запомните, что этот метод только создает файл, но не записывает к нему контент.
Пример
// Java программа для демонстрирования метода createNewFile() import java.io.File; public class FileCreator < public static void main(String args[]) < try < // Возьмите файл File f = new File("D:\\example.txt"); //Создайте новый файл // Убедитесь, что он не существует if (f.createNewFile()) System.out.println("File created"); else System.out.println("File already exists"); > catch (Exception e) < System.err.println(e); >> >
Когда закончите и запустите программу, результат будет иметь следующий вид:
Результат
Файл создан (File created)
2. Используйте класс java.io.FileOutputStream
Если хотите создать новый файл и одновременно записать какую-нибудь информацию в нем, можете использовать метод FileOutputStream.write. Этот метод автоматически создает новый файл и записывает в нем контент.
Метод FileOutputStream используется для записи байтов в файл. Если хотите записать символьно-ориентированную информацию, будет лучше использовать FileWriter.
Смотрите использование кода:
Пример
String fileData = "Some Test"; FileOutputStream fos = new FileOutputStream("D:\\example.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
3. Используйте Java NIO Files.write()
Используйте класс Java NIO Files для создания нового файла и записи информации в нем. Этот Java класс представляет метод write(Path path, byte[] bytes, OpenOption… options), который записывает байты к файлу по указанному пути.
С использованием класса Files возможно создавать, перемещать, копировать, удалять файлы и каталоги. Он также может быть использован для записи и чтения файла.
Files.write() — это рекомендуемый способ создания файла, так как вам не придется беспокоиться о закрытии ресурсов IO.
Этот класс имеет следующие параметры:
- lines — объект для реализования последовательности символов. Запишите строки текста к файлу. Каждая строка — это последовательность символов и записывается к файлу поочередно. Каждая строка заканчивается разделителем строки платформы.
- options — Этот параметр указывает, как создается или открывается файл. Если никакой параметр не указан, по умолчанию будут выбраны параметры CREATE, TRUNCATE_EXISTING and WRITE. Это означает, что он открывает файл для записи и создает файл, если он не существует, или размер файла доводит до 0, если файл существует.
- path — Указывает путь.
- cs — Набор символов, используемый для кодировки
All the bytes in byte array are written to the file. This method ensures that the file is closed when all the bytes have been written and returns the path of written file.
Пример
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FilesWriterExample < public static void main(String[] args) < Path path = Paths.get("D:/data/example.txt"); try < String str = "Some write file Example"; byte[] bs = str.getBytes(); Path writtenFilePath = Files.write(path, bs); System.out.println("Written content in file:\n"+ new String(Files.readAllBytes(writtenFilePath))); > catch (Exception e) < e.printStackTrace(); >> >
