Chapter 12. File, I/O, and system operations

 

In this chapter

  • Keyboard input and screen output
  • File operations
  • Standard library file facilities
  • The StringIO class

The topics in this chapter—keyboard I/O, files, and system commands—are united by the fact that they operate on entities that aren’t, strictly speaking, objects. They take you outside the bounds of the program’s memory space, and into your hardware and/or your operating system.

At the same time, one of the first things you’ll notice about most of these operations is that Ruby keeps them object oriented. Input and output streams, like the standard input stream or, for that matter, any file handle, are objects. Some I/O-related commands are more procedural: puts, for example, or the system method that lets you execute a system command. But puts is only procedural when it’s operating on the standard output stream. When you puts a line to a file, you explicitly send the message “puts” to a File object.

The memory space of a Ruby program is a kind of idealized space, where objects come into existence and talk to each other. Given the fact that I/O and system command execution involve stepping outside this idealized space, Ruby does a lot to keep objects in the mix.

12.1. How Ruby’s I/O system is put together

12.2. Basic file operations

12.3. Querying IO and File objects

12.4. Directory manipulation with the Dir class

12.5. File tools from the standard library

12.6. Summary