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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs