Search code examples
ruby

How to read lines from file into array?


This is what I want to do, but with a one-liner:

lines = Array.new
File.open('test.txt').each { |line| lines << line }

Possible?


Solution

  • Do as below :

    File.readlines('test.txt')
    

    Read documentation :

    arup@linux-wzza:~> ri IO::readlines
    
    = IO::readlines
    
    (from ruby site)
    ------------------------------------------------------------------------------
      IO.readlines(name, sep=$/ [, open_args])     -> array
      IO.readlines(name, limit [, open_args])      -> array
      IO.readlines(name, sep, limit [, open_args]) -> array
    
    ------------------------------------------------------------------------------
    
    Reads the entire file specified by name as individual lines, and
    returns those lines in an array. Lines are separated by sep.
    
      a = IO.readlines("testfile")
      a[0]   #=> "This is line one\n"
    
    If the last argument is a hash, it's the keyword argument to open. See IO.read
    for detail.
    

    Example

    arup@linux-wzza:~/Ruby> cat out.txt
    name,age,location
    Ram,12, UK
    Jadu,11, USA
    arup@linux-wzza:~/Ruby> ruby -e "p File::readlines('./out.txt')"
    ["name,age,location\n", "Ram,12, UK\n", "Jadu,11, USA\n"]
    arup@linux-wzza:~/Ruby>