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


Я хочу, чтобы скопировать содержимое файла в файл "Б". после завершения копирования я хочу очистить содержимое файла ' A ' и хочу написать на нем с самого начала. Я не могу удалить файл 'A', поскольку он связан с какой-то другой задачей.

Я смог скопировать содержимое с помощью Java file API (readLine ()), но не знаю, как очистить содержимое файла и установить указатель файла в начало файла.

16 71

16 ответов:

просто выведите пустую строку в файл:

PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();

Я не верю, что ты даже написать пустую строку в файл.

PrintWriter pw = new PrintWriter("filepath.txt"); pw.close();

вы хотите метод setLength () в классе RandomAccessFile.

просто, ничего не пиши!

FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();

один вкладыш для выполнения операции усечения:

FileChannel.open(Paths.get("/home/user/file/to/truncate"), StandardOpenOption.WRITE).truncate(0).close();

дополнительная информация доступна в документации Java:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html

после копирования из A В B откройте файл A снова в режиме записи, а затем напишите в нем пустую строку

Как насчет ниже:

File temp = new File("<your file name>");
if (temp.exists()) {
    RandomAccessFile raf = new RandomAccessFile(temp, "rw");
    raf.setLength(0);
}

одним из лучших компаньонов для java является Проекты Apache и, пожалуйста, обратитесь к нему. Для операции, связанной с файлом, вы можете обратиться к Commons IO.

приведенный ниже код одной строки поможет нам сделать файл пустым.

FileUtils.write(new File("/your/file/path"), "")

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

просто написать:

FileOutputStream writer = new FileOutputStream("file.txt");

Если вам не нужно использовать писатель впоследствии самый короткий и самый чистый способ сделать это было бы так:

new FileWriter("/path/to/your/file.txt").close();

можно использовать

FileWriter fw = new FileWriter(/*your file path*/);
PrintWriter pw = new PrintWriter(fw);
pw.write("");
pw.flush(); 
pw.close();

Не забывайте использовать

FileWriter fw = new FileWriter(/*your file path*/,true);

True в конструкторе filewriter позволит добавить.

FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");

С try-with-resources writer будет автоматически закрыт:

import org.apache.commons.lang3.StringUtils;
final File file = new File("SomeFile");
try (PrintWriter writer = new PrintWriter(file))  {
    writer.print(StringUtils.EMPTY);                
}
// here we can be sure that writer will be closed automatically

использование: новая библиотека Java 7 NIO, попробуйте

        if(!Files.exists(filePath.getParent())) {
            Files.createDirectory(filePath.getParent());
        }
        if(!Files.exists(filePath)) {
            Files.createFile(filePath);
        }
        // Empty the file content
        writer = Files.newBufferedWriter(filePath);
        writer.write("");
        writer.flush();

приведенный выше код проверяет, существует ли Directoty, если не создает каталог, проверяет, существует ли файл, да он записывает пустую строку и очищает буфер, в конце концов yo получает писатель, указывающий на пустой файл

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

public static FileInputStream getFile(File fileImport) throws IOException {
      FileInputStream fileStream = null;
    try {
        PrintWriter writer = new PrintWriter(fileImport);
        writer.print(StringUtils.EMPTY);
        fileStream = new FileInputStream(fileImport);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            writer.close();
        }
         return fileStream;
}