3 m read

Ruby File Input and Output (I/O)

Introduction to Ruby File Input and Output

Ruby is an expressive and easy-to-understand language that is often employed in web development. A crucial part of any programming language is its ability to interact with files – to read from and write into them.

This article will walk you through the steps of performing Ruby file Input/Output operations, generally called I/O, using various methods Ruby provides.

Understanding Basic I/O Operations

Gets and Puts Statements

In Ruby, the gets statement is used to take any input from the user from the standard screen, labeled as STDIN. On the other hand, the puts statement instructs the program to display the desired value stored in a variable. It’s kind of like a conversation between the user and the program.

Print and Putc Statements

There are also the print and putc statements. The print statement is similar to the puts statement, but it doesn’t necessarily create a new line post-printing. The putc statement is used to output one character at a time.

File Pointer

A file pointer indicates the location of the next operation within a file. When a file is opened, the file pointer is initially positioned at the beginning of the file.

However, if the file is opened in append mode, the file pointer is positioned at the end of the file. If the file doesn’t exist, Ruby creates a new one for reading and writing.

Manipulating Files

The IO class in Ruby provides several methods to manipulate files. For instance, the ‘IO.readlines’ method can be used to read the contents of a file line by line.

Additionally, there are methods available for programmatically renaming and deleting files, namely the rename and delete methods. You can also change file permissions using the chmod method.

Opening and Closing Files in Ruby

Finding and Modifying File Information

Ruby offers various methods to find and manipulate file information. For example, there is a command to retrieve the time of creation, modification, or last access of a file.

The ftype method identifies the type of a file by returning one of the certain predefined symbols. You can also find the current directory using the Dir.pwd method.

Reading Directories

To get a list of files and directories within a specific directory, you can use Dir.entries. To delete a directory, you can use Dir.delete. Ruby’s standard library includes a library called Tempfile that helps create temporary files.

Opening Files

In Ruby, you can use the File.open method to open a file. If the file doesn’t exist, it creates a new one for reading and writing. A subprocess in Ruby is indicated by a string starting with “|” and the remainder of the string is a process connected to a socket.

Closing Files

Don’t forget to close the files after you’re done with them. Failing to do so can result in loss of data or other issues. To close a file, you simply call the close method on the file object.

Handling IO and File Objects in Ruby

The IO Class

Forming the basis for all types of input and output in Ruby is the IO class, whether it’s reading from or writing into a file. Featuring a few useful methods to handle I/O operations effectively, the IO class streamlines interaction with files and other input/output sources.

The File Class

File class, being the only standard subclass of IO, is closely associated with IO. In other words, it adds file-specific methods to the generic data-passing methods of IO. The File class in Ruby helps handle file operations and manipulations in a sophisticated, yet simple way.

Difference between IO and File

While the IO class is designed for handling raw data, the File class tackles file-related operations. They each have their appropriate application, but they are both equipped with robust methods for efficient data handling.


Ruby provides several methods for reading from and writing into files. Whether it’s the gets and puts statements or the File and IO classes, understanding these operations is crucial to managing data efficiently in Ruby.

File operations are a key part of programming, and having a firm grasp of them enables smoother and more effective coding in Ruby.

Next: Next Article | Previous: Modules in Ruby


Leave a Reply