O'Reilly logo

The Ruby Programming Language by David Flanagan, Yukihiro Matsumoto

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Input/Output

An IO object is a stream: a readable source of bytes or characters or a writable sink for bytes or characters. The File class is a subclass of IO. IO objects also represent the “standard input” and “standard output” streams used to read from and write to the console. The stringio module in the standard library allows us to create a stream wrapper around a string object. Finally, the socket objects used in networking (described later in this chapter) are also IO objects.

Opening Streams

Before we can perform input or output, we must have an IO object to read from or write to. The IO class defines factory methods new, open, popen, and pipe, but these are low-level methods with operating system dependencies, and they are not documented here. The subsections that follow describe more common ways to obtain IO objects. (And Networking includes examples that create IO objects that communicate across the network.)

Opening files

One of the most common kinds of IO is the reading and writing of files. The File class defines some utility methods (described below) that read the entire contents of a file with one call. Often, however, you will instead open a file to obtain a File object and then use IO methods to read from or write to the file.

Use File.open (or File.new) to open a file. The first argument is the name of the file. This is usually specified as a string, but in Ruby 1.9, you can use any object with a to_path method. Filenames are interpreted relative to the current working ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required