- Java — Как очистить текстовый файл, не удаляя его?
- 4 ответа
- Удалить содержимое файла на Java
- 1. Введение
- 2. Использование PrintWriter
- 3. Использование Файлрайтер
- 4. Использование FileOutputStream
- 5. Использование Apache Commons IO FileUtils
- 6. Использование файлов Java NIO
- 7. Использование Java NIO FileChannel
- 8. Использование Гуавы
- 9. Заключение
- How to Delete the Contents of a File
- Удалить содержимое файла в Java
- 2. Использование PrintWriter
- 3. Использование FileWriter
- 4. Использование FileOutputStream
- 5. Использование Apache Commons IO FileUtils
- 6. Использование файлов Java NIO
- 7. Использование Java NIO FileChannel
- 8. Использование гуавы
- 9. Заключение
- Популярные посты
Java — Как очистить текстовый файл, не удаляя его?
если их уже нет. Но что, если один существует, и я хочу его очищать каждый раз, когда я запускаю программу? Это то, что мне интересно: повторить еще раз, как очистить файл, который уже существует, чтобы быть пустым? Вот что я думал:
4 ответа
Если вы хотите очистить файл без удаления, возможно, вы можете обойти это
public static void clearTheFile()
Изменение: это исключает исключение, поэтому нужно поймать исключения
Вы уверены, что метод flush очищает содержимое файла? Я думал, что flush просто убедится, что поток полностью опустошен ..
FileWriter во второй строке выдает исключение io, есть что-то, что нужно изменить, а не просто выбрасывает IOException после clearFile ()?
Лучше всего я мог подумать:
Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING);
Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING);
В обоих случаях, если файл, указанный в pathObject, доступен для записи, то этот файл будет усечен. Не нужно вызывать функцию write(). Выше кода достаточно, чтобы удалить/усечь файл. Это новое в java 8.
Вы можете удалить файл и создать его снова, а не делать много io.
Кроме того, вы можете просто перезаписать содержимое файла за один раз, как объяснено в других ответах:
PrintWriter writer = new PrintWriter(file); writer.print(""); writer.close();
Кроме того, вы используете конструктор из Scanner который принимает аргумент String . Этот конструктор не будет читать из файла, но использовать аргумент String в качестве текста для сканирования. Сначала вы должны создать дескриптор файла, а затем передать его конструктору Scanner :
File file = new File("jibberish.txt"); Scanner scanner = new Scanner(file);
Удалить содержимое файла на Java
Узнайте различные способы удаления содержимого файла без удаления файла.
1. Введение
В этом учебнике Мы увидим, как мы используем Java для удаления содержимого файла без удаления самого файла. Поскольку есть много простых способов сделать это, давайте рассмотрим каждый по одному.
2. Использование PrintWriter
Ява РаспечататьПисач класс расширяет Писатель класс. Он печатает отформатированную представление объектов в потоке текстового вывода.
Мы выполнить простой тест. Давайте создадим РаспечататьПисач например, указывая на существующий файл, удаляя существующее содержимое файла, просто закрывая его, а затем убедитесь, что длина файла пуста:
new PrintWriter(FILE_PATH).close(); assertEquals(0, StreamUtils.getStringFromInputStream(new FileInputStream(FILE_PATH)).length());
Кроме того, обратите внимание, что если нам не нужна РаспечататьПисач объект для дальнейшей обработки, это лучший вариант. Однако, если нам нужна РаспечататьПисач объект для дальнейших операций файла, мы можем сделать это по-другому:
PrintWriter writer = new PrintWriter(FILE_PATH); writer.print(""); // other operations writer.close();
3. Использование Файлрайтер
Ява ФайлРайтер является стандартным классом Java IO API, который предоставляет методы записи данных, ориентированных на характер, в файл.
Давайте теперь посмотрим, как мы можем сделать ту же операцию с помощью ФайлРайтер:
new FileWriter(FILE_PATH, false).close();
Точно так же, если нам нужна ФайлРайтер объект для дальнейшей обработки, мы можем назначить его переменной и обновить с пустой строкой.
4. Использование FileOutputStream
FileOutputStream Java — это выходной поток, используемый для записи данных byte в файл.
Теперь давайте удалим содержимое файла с помощью FileOutputStream:
new FileOutputStream(FILE_PATH).close();
5. Использование Apache Commons IO FileUtils
ИО- Apache Commons это библиотека, которая содержит классы утилиты, чтобы помочь с общими проблемами IO. Мы можем удалить содержимое файла с помощью одного из его классов утилиты – ФилеУтилс.
Чтобы увидеть, как это работает, давайте добавим ИО- Apache Commons зависимость от нашей пом.xml :
После этого возьмем быстрый пример, демонстрирующий удаление содержимого файла:
FileUtils.write(new File(FILE_PATH), "", Charset.defaultCharset());
6. Использование файлов Java NIO
Мы также можем удалить содержимое файла с помощью java.nio.file.Files :
BufferedWriter writer = Files.newBufferedWriter(Paths.get(FILE_PATH)); writer.write(""); writer.flush();
7. Использование Java NIO FileChannel
Java NIO FileChannel — это реализация NIO для подключения файла. Он также дополняет стандартный пакет Java IO.
Мы также можем удалить содержимое файла с помощью java.nio.channels.FileChannel :
FileChannel.open(Paths.get(FILE_PATH), StandardOpenOption.WRITE).truncate(0).close();
8. Использование Гуавы
Guava — это библиотека с открытым исходным кодом на основе Java, которая предоставляет полезные методы для ведения операций в i/O. Давайте посмотрим, как использовать API Guava для удаления содержимого файла.
Во-первых, мы должны добавить Гуава зависимости в нашей пом.xml :
После этого рассмотрим быстрый пример удаления содержимого файла с помощью Guava:
File file = new File(FILE_PATH); byte[] empty = new byte[0]; com.google.common.io.Files.write(empty, file);
9. Заключение
Подводя итог, мы видели несколько способов удаления содержимого файла без удаления самого файла.
Полную реализацию этого учебника можно найти более на GitHub .
How to Delete the Contents of a File
Learn to delete or clear the content of a file without deleting the file using standard IO classes and 3rd party libraries.
1. Using PrintWriter Constructor
The PrintWiter is used to write formatted strings to a text output stream.
The PrintWriter(file) constructor creates a new PrintWriter with the specified file parameter. If the file exists then it will be truncated to zero size; otherwise, a new file will be created.
File file = new File("/path/file"); try(PrintWriter pw = new PrintWriter(file)) < //Any more operations if required >catch (FileNotFoundException e)
2. Using FileWriter Constructor
The FileWeite is also used to write text to character files. Similar to PrintWriter, the constructor of the FileWriter also empties the file if the file is not been opened for the append operation.
In the given example, the second parameter false indicates the append mode. If it is true then bytes will be written to the end of the file rather than the beginning.
File file = new File("/path/file"); try(FileWriter fw = new FileWriter(file)) < //Any more operations if required >catch (IOException e)
A random-access file behaves like a large array of bytes stored in the file system. We can use its setLength() method to empty the file.
try(RandomAccessFile raf = new RandomAccessFile(file, "rw")) < raf.setLength(0); >catch (FileNotFoundException e) < e.printStackTrace(); >catch (IOException e)
4. Using NIO’s Files.newBufferedWriter()
We can also use the BufferedWriter to write an empty string into the file. This will make the file size zero by deleting all the content of it.
try(BufferedWriter writer = Files.newBufferedWriter(file.toPath())) < writer.write(""); writer.flush(); >catch (IOException e)
5. Using Commons IO FileUtils
The FileUtils class be used to write the empty string into the file that effectively deletes all the content present in the file.
File file = new File("/path/file"); try < FileUtils.write(file, "", StandardCharsets.UTF_8); >catch (IOException e)
Include the latest version of Commons IO library from Maven.
In this Java tutorial, we learned to make the file empty by deleting all the content in it. This makes the file size zero without deleting the file itself.
We learned to use the Java IO’s PrintWriter, FileWriter, NIO’s Files class and Commons IO’s FileUtils class for emptying the file.
Удалить содержимое файла в Java
В этом руководстве мы увидим, как мы используем Java для удаления содержимого файла без удаления самого файла. Поскольку есть много простых способов сделать это, давайте рассмотрим каждый по отдельности.
2. Использование PrintWriter
Класс Java PrintWriter расширяет класс Writer . Он печатает форматированное представление объектов в поток вывода текста.
Проведем простой тест. Давайте создадим экземпляр PrintWriter, указывающий на существующий файл, удалив существующее содержимое файла, просто закрыв его, а затем убедимся, что длина файла пуста:
new PrintWriter(FILE_PATH).close(); assertEquals(0, StreamUtils.getStringFromInputStream(new FileInputStream(FILE_PATH)).length());
Также обратите внимание, что если нам не нужен объект PrintWriter для дальнейшей обработки, это лучший вариант. Однако, если нам нужен объект PrintWriter для дальнейших файловых операций, мы можем сделать это по-другому:
PrintWriter writer = new PrintWriter(FILE_PATH); writer.print(""); // other operations writer.close();
3. Использование FileWriter
FileWriter Java — это стандартный класс Java IO API, который предоставляет методы для записи символьных данных в файл.
Давайте теперь посмотрим, как мы можем выполнить ту же операцию с помощью FileWriter:
new FileWriter(FILE_PATH, false).close();
Точно так же, если нам нужен объект FileWriter для дальнейшей обработки, мы можем назначить его переменной и обновить, добавив пустую строку.
4. Использование FileOutputStream
FileOutputStream Java — это выходной поток, используемый для записи байтовых данных в файл.
Теперь давайте удалим содержимое файла с помощью FileOutputStream:
new FileOutputStream(FILE_PATH).close();
5. Использование Apache Commons IO FileUtils
Apache Commons IO — это библиотека, содержащая служебные классы для решения общих проблем ввода-вывода. Мы можем удалить содержимое файла с помощью одного из его служебных классов — FileUtils.
Чтобы увидеть, как это работает, давайте добавим зависимость ввода-вывода Apache Commons в наш pom.xml :
После этого давайте рассмотрим быстрый пример, демонстрирующий удаление содержимого файла:
FileUtils.write(new File(FILE_PATH), "", Charset.defaultCharset());
6. Использование файлов Java NIO
Файл Java NIO был представлен в JDK 7. Он определяет интерфейсы и классы для доступа к файлам, атрибутам файлов и файловым системам.
Мы также можем удалить содержимое файла с помощью java.nio.file.Files :
BufferedWriter writer = Files.newBufferedWriter(Paths.get(FILE_PATH)); writer.write(""); writer.flush();
7. Использование Java NIO FileChannel
Java NIO FileChannel — это реализация NIO для подключения файла. Он также дополняет стандартный пакет ввода-вывода Java.
Мы также можем удалить содержимое файла с помощью java.nio.channels.FileChannel :
FileChannel.open(Paths.get(FILE_PATH), StandardOpenOption.WRITE).truncate(0).close();
8. Использование гуавы
Guava — это библиотека на основе Java с открытым исходным кодом, которая предоставляет служебные методы для выполнения операций ввода-вывода. Давайте посмотрим, как использовать Guava API для удаления содержимого файла.
Во-первых, нам нужно добавить зависимость Guava в наш pom.xml :
После этого давайте посмотрим на быстрый пример удаления содержимого файла с помощью Guava:
File file = new File(FILE_PATH); byte[] empty = new byte[0]; com.google.common.io.Files.write(empty, file);
9. Заключение
Подводя итог, мы видели несколько способов удалить содержимое файла без удаления самого файла.
Полную реализацию этого руководства можно найти на GitHub.