We use IO modes to tell the computer how we want to open a file: to read, write, or add more content.
IO modes (r, w, a) in Ruby
File.open('filename', 'mode') do |file| # work with file here end
'r' means open the file for reading only.
'w' means open the file for writing, and it will erase the file if it exists or create a new one.
'a' means open the file for appending, so new content is added at the end.
File.open('example.txt', 'r') do |file| content = file.read puts content end
File.open('example.txt', 'w') do |file| file.puts 'Hello, world!' end
File.open('example.txt', 'a') do |file| file.puts 'Adding a new line.' end
This program first writes two lines to a file, then adds a third line, and finally reads and prints all lines.
filename = 'testfile.txt' # Write mode: create or overwrite file File.open(filename, 'w') do |file| file.puts 'Line 1' file.puts 'Line 2' end # Append mode: add more lines File.open(filename, 'a') do |file| file.puts 'Line 3' end # Read mode: read and print all lines File.open(filename, 'r') do |file| file.each_line do |line| puts line.chomp end end
Using 'w' mode deletes old file content, so be careful if you want to keep it.
Using 'a' mode keeps old content and adds new content at the end.
Always close files or use blocks (do...end) to close automatically.
'r' mode is for reading files without changing them.
'w' mode is for writing files and erases old content.
'a' mode is for adding new content to the end of files.
Practice
'r' mode do when opening a file in Ruby?Solution
Step 1: Understand the purpose of 'r' mode
The 'r' mode is used to open a file only for reading, so the file content is not changed.Step 2: Compare with other modes
'w' mode writes and erases content, 'a' appends, but 'r' only reads.Final Answer:
Opens the file for reading only, without changing its content. -> Option AQuick Check:
'r' = read only [OK]
- Confusing 'r' with 'w' and thinking it erases content
- Assuming 'r' can write to the file
- Mixing 'r' with 'a' mode functionality
data.txt for appending in Ruby?Solution
Step 1: Identify the mode for appending
The mode 'a' is used to open a file for appending new content at the end.Step 2: Check the syntax
The correct syntax is File.open('filename', 'a') to append.Final Answer:
File.open('data.txt', 'a') -> Option DQuick Check:
Append mode = 'a' [OK]
- Using 'r' which is read-only mode
- Using 'w' which erases file content
- Using 'x' which creates a new file and errors if exists
example.txt initially contains "Hello"?File.open('example.txt', 'w') { |f| f.puts 'World' }
content = File.read('example.txt')
puts contentSolution
Step 1: Understand 'w' mode effect
Opening with 'w' erases existing content and writes new content.Step 2: Analyze the code output
The file is overwritten with "World" and then read back, so output is "World" with a newline.Final Answer:
World -> Option CQuick Check:
'w' erases old content, so output is new content with newline [OK]
- Thinking 'w' appends instead of overwriting
- Expecting old content to remain
- Confusing output with combined old and new text
log.txt. What is the error?File.open('log.txt', 'w') do |file|
file.puts 'Goodbye'
endSolution
Step 1: Identify the mode used
The code uses 'w' mode which overwrites the file content.Step 2: Understand the intended action
To add content without erasing, 'a' mode should be used instead of 'w'.Final Answer:
Using 'w' mode erases the file instead of appending. -> Option BQuick Check:
Append needs 'a', not 'w' [OK]
- Confusing 'w' with append mode
- Thinking 'w' adds content without erasing
- Believing quotes style affects file opening
notes.txt, appends the line "New note added", and then reads the updated content to print it. Which sequence of file modes should you use?Solution
Step 1: Read the original file
Use 'r' mode to read the existing content without changing it.Step 2: Append the new line
Use 'a' mode to add "New note added" at the end without erasing.Step 3: Read the updated content
Open again with 'r' mode to read and print the updated file content.Final Answer:
Open with 'r' to read, then 'a' to append, then 'r' to read again. -> Option AQuick Check:
Read, append, read = 'r', 'a', 'r' [OK]
- Using 'w' which erases content before appending
- Trying to append before reading original content
- Not reopening file to read updated content
Ready to prove it?
Pass the test and this pattern moves unknown
