- Read Tutorial
- Watch Guide Video
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.