How to Read Files into a Ruby Program Using the File Class
Ruby does some cool things when it comes to reading from a file, and we are going to see it in this lesson.
Guide Tasks
  • Read Tutorial
  • Watch Guide Video
Video locked
This video is viewable to users with a Bottega Bootcamp license

Ruby does some cool things when it comes to reading from a file, and we are going to see it in this guide.

In the last guide we created a file containing the names of baseball teams. You can ask Ruby to read the contents of this file with the command,

teams = File.read("files-lessons/teams.txt")

If you print this variable teams, your output should be the names of all the teams stored in that file.

Now, let's say we want to do something with the contents of a file. First we have to separate the values and put them in an array. The code for this task is,

p teams.split

The split method will look at the string of text and separate each element that is separated by a space.

If you execute it, you'll see that the values turned into an array.

["Twins,", "Astros,", "Mets,", "Yankees"]

If you don't like the , after every element in the array, you can remove that too by adding an argument to the split method:

p teams.split(',')

The split functions takes a delimiter as its argument. So, if you run it now, the output should be:

["Twins", " Astros", " Mets", " Yankees"]

So, that's how you can convert the values in a file into an array.

Next, let's assume we have teams spread across multiple files, and we want to get all of them into the same array. To do this, enter:

teams_one = File.read("files-lessons/teams.txt")
teams_two = File.read("files-lessons/other_teams.txt")

p teams_one.split(',') + teams_two.split(',')

If you run this code, this is how your output should be:

["Twins", " Astros", " Mets", " Yankees", "A's", " Diamondbacks", " Mariners", " Marlins"]

We can now do whatever we want with this combined array. For example, you can turn it all into uppercase.

teams_one = File.read("files-lessons/teams.txt")
teams_two = File.read("files-lessons/otherteams.txt")

teams_master = teams_one.split(',') + teams_two.split(',')

teams_master.each { |team| p team.upcase }

And if you run this code, you output should have all the teams printed in uppercase.

"TWINS"
" ASTROS"
" METS"
" YANKEES"
"A'S"
" DIAMONDBACKS"
" MARINERS"
" MARLINS"

So that's how you can not only read files in Ruby, but also how to practically work with the data contained in them.