Erasing text from a file

To me it seems it should be a rather obvious thing, but no matter where
I look, I can’t find how to erase text from a file or clear a file. The
only things I have found are moving the the cursor to the start and
writing more text over it (but that doesn’t get rid of it), or reopening
the file.

Is there a way to simple erase text from the file?

Thanks,
Lucas

Lucas L. ha scritto:

File.open(‘file.txt’, ‘w’) { |file| file = nil }

Andrea F. wrote:

File.open(‘file.txt’, ‘w’) { |file| file = nil }

That reopens the file. Is there a way to do it without reopening?

Lucas L. wrote:

Andrea F. wrote:

File.open(‘file.txt’, ‘w’) { |file| file = nil }

The “file = nil” part is completely unneccessary. You can just do
File.open(‘file.txt’, ‘w’) {}

Is there a way to do it without reopening?

I don’t think there is.

HTH,
Sebastian

Lucas L. wrote:

Is there a way to simple erase text from the file?

perhaps File#truncate

---------------------------------------------------------- File#truncate
file.truncate(integer) => 0

 Truncates _file_ to at most _integer_ bytes. The file must be
 opened for writing. Not available on all platforms.

    f = File.new("out", "w")
    f.syswrite("1234567890")   #=> 10
    f.truncate(5)              #=> 0
    f.close()                  #=> nil
    File.size("out")           #=> 5

Guy Decoux

Sebastian H. ha scritto:

Ok, thank you :slight_smile:

Andrea

ts wrote:

perhaps File#truncate

The documentation says this is platform specific, which I’d like to
avoid.
File.open will have to do.