Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
  • Dealing with Files in Ruby

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 373
    Comment on it

    In my previous blog Dealing with Directories in Ruby, I explained you, how we can play with directories in ruby. Today I am going to tell you how we can interact with files by opening them in different modes and performing read/write operations in files. So files in ruby are basically handled using two ruby classes that are File class and IO class. The most commonly methods used are:

    a) Creating File objects:

    File objects can be created using using 2 methods:


    It is used to create a new file object in a mode so that other operations on the file can be performed. You can associate with a block.
 "filepath", "mode") do |file|
      #File operations

    The different modes available for a file are:

    r    Read-only mode
    r+    Read-write mode
    w    Write-only mode
    w+    Read-write mode
    a    Write-only mode but appends at the last
    a+    Read and write mode and points at the end of the file


    It is also used to create a file object but unlike it can't be associated to a block.

    file ="filepath", "mode")
      #File operations

    b) Reading contents from file using sysread method:

    This method is used to read the file content. It reads the file on character basis so on the file object if you call this method by passing a number, it will return the characterd upto that position. As it is just for reading the file so you can open file in any mode. Lets see an example suppose we have a file called "nothing.txt" with texts:

    I am a rails developer.
    I am a python developer.
    I am a ruby developer.

    Then if we run sysread like this

    f ="nothing.txt", "r")
    p f.sysread(4)
    #=> Output will be
    "I am a"

    c) Writing contents to file using syswrite method:

    For writing contents to a file you can use this method. For using this the file must be opened in write/appending mode

    f ="nothing.txt", "w")
    f.syswrite("I am a HTML developer")
    Now the file nothing.txt will have content:
    I am a HTML developer

    d) Reading character by character using each_byte:

    This method iterates over each character of the file.

    f ="nothing.txt", "r+")
    f.each_byte {|char| #Perform operation }

    e) Reading Line by Line a file:

    For reading a file by line IO.readlines method is used that stores all the lines in an array: If our file has content

    I am a rails developer.
    I am a python developer.
    I am a ruby developer.

    Then this will work like this:

    lines = IO.readlines("nothing.txt")
    puts lines[0]
    #=> I am a rails developer.
    puts lines[1]
    #=> I am a python developer.
    puts lines[2]
    #=> I am a ruby developer.

    f) Writing Contents to File using write method:

    Contents can be written to file using this:"FILE_PATH", 'w') { |file| file.write("your content") }

    g) Other File Operations:

    To rename a file rename method can be used like this:

    # Rename a file from a1.txt to a2.txt
    File.rename( "a1.txt", "a2.txt" )

    To delete a file delete method can be used

    # Delete a file a1.txt

    Changing the mode/ownership

    # Changing mode of file a.txt to mask value
    file ="a.txt", "w")
    file.chmod( 0755 )


 0 Comment(s)

Sign In

Sign up using

Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: