web-dev-qa-db-fra.com

comment supprimer le contenu d'un fichier texte sans se supprimer

Je veux copier le contenu du fichier 'A' dans le fichier 'B' ..___ une fois la copie terminée, je veux effacer le contenu du fichier 'A' et je veux écrire dessus depuis son début ..__ impossible de supprimer le fichier 'A' car il est lié à une autre tâche.

J'ai pu copier le contenu à l'aide de l'API de fichier de Java (readLine ()), mais je ne sais pas comment effacer le contenu du fichier et définir le pointeur de fichier sur le début du fichier.

77
brig

Il suffit d’imprimer une chaîne vide dans le fichier:

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

Je ne crois pas que vous deviez même écrire une chaîne vide dans le fichier.

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

57
CamLeng

Vous voulez la méthode setLength () dans la classe RandomAccessFile.

27
Burleigh Bear

Simple, n'écris rien!

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

Une doublure pour effectuer une opération tronquée:

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

Pour plus d'informations, consultez la documentation Java: https://docs.Oracle.com/javase/7/docs/api/Java/nio/channels/FileChannel.html

9
Michał

Que diriez-vous ci-dessous:

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

Après avoir copié de A à B, ouvrez à nouveau le fichier A en mode écriture, puis écrivez une chaîne vide dans celui-ci.

5
Rasel

Un des meilleurs compagnons pour Java est Apache Projects et veuillez vous y reporter. Pour les opérations liées aux fichiers, vous pouvez vous référer au projet Commons IO .

Le code ci-dessous d’une ligne nous aidera à vider le fichier.

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

Ecrivez:

FileOutputStream writer = new FileOutputStream("file.txt");
4
Manh Vu

Ecrivez une chaîne vide dans le fichier, videz et fermez. Assurez-vous que le rédacteur de fichier n'est pas en mode ajout. Je pense que cela devrait faire l'affaire.

2
hakon

Si vous n’avez pas besoin d’utiliser ensuite le scripteur, la méthode la plus simple et la plus propre est la suivante:

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

Avec try-with-resources writer sera automatiquement fermé:

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
0
Bartek

Tout ce que vous avez à faire est d'ouvrir le fichier en mode tronqué. Toute classe de fichier Java sur fera automatiquement cela pour vous.

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

using: New Java 7 NIO library, essayez 

        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();

Le code ci-dessus vérifie si Directoty existe sinon crée le répertoire, vérifie si le fichier existe est oui, il écrit la chaîne vide et vide le tampon, à la fin vous obtenez le rédacteur pointant sur le fichier vide

0
harsha

Vous pouvez utiliser

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

Rappelez-vous de ne pas utiliser

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

True dans le constructeur de filewriter permettra d’ajouter.

0
Revanth Kumar