Bird
Raised Fist0
Rubyprogramming~5 mins

Dir operations for directories in Ruby

Choose your learning style10 modes available
Introduction

We use directory operations to look inside folders, create new folders, or remove them. This helps us organize and manage files on the computer.

You want to list all files inside a folder to see what is there.
You need to create a new folder to save some files.
You want to check if a folder exists before saving something.
You want to delete an empty folder you no longer need.
You want to change the current folder your program is working in.
Syntax
Ruby
Dir.entries(path)
Dir.mkdir(path)
Dir.exist?(path)
Dir.rmdir(path)
Dir.chdir(path) do
  # code inside new directory
end

Dir.entries(path) returns an array of all files and folders inside the given path.

Dir.mkdir(path) creates a new directory at the given path.

Examples
This lists all files and folders in the current directory.
Ruby
files = Dir.entries(".")
puts files
This creates a folder named 'new_folder' and checks if it exists.
Ruby
Dir.mkdir("new_folder")
puts Dir.exist?("new_folder")
This removes the folder named 'old_folder' if it is empty.
Ruby
Dir.rmdir("old_folder")
This changes the current directory to 'new_folder' temporarily and prints its path.
Ruby
Dir.chdir("new_folder") do
  puts Dir.pwd
end
Sample Program

This program shows files in the current folder, creates a new folder if it doesn't exist, changes into it to list files, then removes the folder.

Ruby
puts "Current directory files:"
puts Dir.entries(".")

folder_name = "test_dir"

unless Dir.exist?(folder_name)
  Dir.mkdir(folder_name)
  puts "Created directory: #{folder_name}"
else
  puts "Directory already exists: #{folder_name}"
end

puts "Changing to #{folder_name} and listing files:"
Dir.chdir(folder_name) do
  puts Dir.entries(".")
end

Dir.rmdir(folder_name)
puts "Removed directory: #{folder_name}"
OutputSuccess
Important Notes

Dir.entries always includes "." (current folder) and ".." (parent folder) in the list.

You can only remove empty directories with Dir.rmdir. To remove folders with files, you need other methods.

Use Dir.chdir with a block to safely change directories and return back automatically.

Summary

Use Dir.entries to see files and folders inside a directory.

Create folders with Dir.mkdir and check existence with Dir.exist?.

Remove empty folders with Dir.rmdir and change directories with Dir.chdir.

Practice

(1/5)
1. Which Ruby method lists all files and folders inside a directory including . and ..?
easy
A. Dir.chdir
B. Dir.mkdir
C. Dir.exist?
D. Dir.entries

Solution

  1. Step 1: Understand the purpose of Dir.entries

    This method returns an array of all entries in the directory, including special entries . and ...
  2. Step 2: Compare with other methods

    Dir.mkdir creates a directory, Dir.exist? checks if a directory exists, and Dir.chdir changes the current directory. None of these list contents.
  3. Final Answer:

    Dir.entries -> Option D
  4. Quick Check:

    List directory contents = Dir.entries [OK]
Hint: Use Dir.entries to list all files and folders [OK]
Common Mistakes:
  • Confusing Dir.entries with Dir.mkdir
  • Using Dir.exist? to list files
  • Thinking Dir.chdir lists directory contents
2. Which of the following is the correct syntax to create a new directory named test_folder in Ruby?
easy
A. Dir.mkdir('test_folder')
B. Dir.create('test_folder')
C. Dir.make('test_folder')
D. Dir.new('test_folder')

Solution

  1. Step 1: Recall the method to create directories

    The correct Ruby method to create a directory is Dir.mkdir.
  2. Step 2: Check syntax correctness

    Dir.mkdir('test_folder') correctly creates a directory named 'test_folder'. Other options are invalid methods.
  3. Final Answer:

    Dir.mkdir('test_folder') -> Option A
  4. Quick Check:

    Create directory = Dir.mkdir [OK]
Hint: Use Dir.mkdir('folder_name') to create directories [OK]
Common Mistakes:
  • Using Dir.create instead of Dir.mkdir
  • Trying Dir.new for directory creation
  • Misspelling method names
3. What will be the output of the following Ruby code?
Dir.mkdir('sample_dir') unless Dir.exist?('sample_dir')
entries = Dir.entries('sample_dir')
puts entries.inspect
medium
A. []
B. ["sample_dir"]
C. [".", ".."]
D. Error: Directory not found

Solution

  1. Step 1: Check directory creation and existence

    The code creates 'sample_dir' if it does not exist, so the directory will exist before listing entries.
  2. Step 2: Understand Dir.entries output for empty directory

    An empty directory still contains special entries: . (current directory) and .. (parent directory). So, Dir.entries returns [".", ".."].
  3. Final Answer:

    [".", ".."] -> Option C
  4. Quick Check:

    Empty directory entries = [".", ".."] [OK]
Hint: Empty dirs always show '.' and '..' in Dir.entries [OK]
Common Mistakes:
  • Expecting empty array for empty directory
  • Thinking directory name appears in entries
  • Assuming error if directory just created
4. Identify the error in this Ruby code snippet that tries to remove a directory:
Dir.rmdir('my_folder')
puts 'Folder removed'
medium
A. Dir.rmdir only removes non-empty directories
B. Dir.rmdir requires the directory to be empty before removal
C. Dir.rmdir should be Dir.remove
D. Dir.rmdir needs a block to execute

Solution

  1. Step 1: Understand Dir.rmdir behavior

    Dir.rmdir removes only empty directories. If 'my_folder' contains files or folders, it will raise an error.
  2. Step 2: Check other options for correctness

    Dir.rmdir only removes non-empty directories is wrong because it says the opposite. Dir.rmdir should be Dir.remove is invalid method name. Dir.rmdir needs a block to execute is incorrect; no block needed.
  3. Final Answer:

    Dir.rmdir requires the directory to be empty before removal -> Option B
  4. Quick Check:

    Dir.rmdir removes empty dirs only [OK]
Hint: Dir.rmdir only deletes empty directories [OK]
Common Mistakes:
  • Trying to remove non-empty directories with Dir.rmdir
  • Using wrong method name like Dir.remove
  • Expecting Dir.rmdir to accept a block
5. You want to change the current working directory to projects, create a new folder new_app inside it, and then list the contents of projects. Which sequence of Ruby commands correctly does this?
hard
A. Dir.chdir('projects') Dir.mkdir('new_app') puts Dir.entries('.')
B. Dir.mkdir('new_app') Dir.chdir('projects') puts Dir.entries('new_app')
C. Dir.entries('projects') Dir.mkdir('new_app') Dir.chdir('new_app')
D. Dir.chdir('new_app') Dir.mkdir('projects') puts Dir.entries('.')

Solution

  1. Step 1: Change directory to 'projects'

    Using Dir.chdir('projects') sets the current directory to 'projects'.
  2. Step 2: Create 'new_app' inside 'projects'

    Dir.mkdir('new_app') creates the new folder inside the current directory.
  3. Step 3: List contents of current directory

    Dir.entries('.') lists all files and folders inside 'projects', including 'new_app'.
  4. Final Answer:

    Dir.chdir('projects') Dir.mkdir('new_app') puts Dir.entries('.') -> Option A
  5. Quick Check:

    Change dir, create folder, list contents = Dir.chdir('projects') Dir.mkdir('new_app') puts Dir.entries('.') [OK]
Hint: Change dir first, then create folder, then list with Dir.entries('.') [OK]
Common Mistakes:
  • Creating folder before changing directory
  • Listing wrong directory contents
  • Changing to new folder before creating it
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard