-2

I'm working with the FileOutputStream class in java, but I don't know how to delete "the contents" of a file (the main reason i need overwrite the file).

Stephen C
  • 698,415
  • 94
  • 811
  • 1,216
Omar
  • 21
  • 1
  • 1
  • 3

4 Answers4

2

If you want to delete the contents of the file, but not the file itself, you could do:

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

A few seconds of Googling got me this:

how to delete the content of text file without deleting itself

How to clear a text file without deleting it?

To delete the file completely, do:

File file = new File("file.txt");
f.delete();
Community
  • 1
  • 1
Andrew Li
  • 55,805
  • 14
  • 125
  • 143
0

Call File.delete() which deletes the file or directory denoted by this abstract pathname.

File f = new File("foo.txt");
if (f.delete()) {
    System.out.println("file deleted");
}
Elliott Frisch
  • 198,278
  • 20
  • 158
  • 249
0

The main reason i need overwrite the file ...

One way to do this is to delete the file using File.delete() or Files.delete(Path). The latter is preferable, since it can tell you why the deletion fails.

The other way is to simply open the file for writing. Provided that you don't open in "append" mode, opening a file to write will truncate the file to zero bytes.


Note that there is a subtle difference in the behavior of these two approaches. If you delete a file and then create a new one, any other application that has the same file open won't notice. By contrast, if you truncate the file, then other applications with the file open will observe the effects of the truncation when they read.

Actually, this is platform dependent. On some platforms, a Java application that tries to open a file for reading that another file has open for writing will get an exception.

Stephen C
  • 698,415
  • 94
  • 811
  • 1,216
-1

Yes, you can do it with FileOutputStream. All the answers given say about PrintWriter but the same can be done with FileOutputStream. The int representation of space is 32. So simply pass the file to the instance of FileOutputStream as: FileOutputStream out = new FileOutputStream(file); out.write(32);

This will clear the contents of the file. Surely use this only of u want to do it with FileOutputStream only otherwise use PrintWriter.