Files and Directories
Path Operations
File path helpers build paths and extract useful pieces such as basename and extension.
path helper
Path helper methods work with path strings without needing the file to exist.
Path Operations
path_operations.rb
Replay: real traced execution (multi-file project)
filename = "report.txt"
directory = "docs"
path = File.join(directory, filename)
base = File.basename path
extension = File.extname path
name_without_extension = File.basename path, extension
puts "path=#{path}"
puts "base=#{base}"
puts "extension=#{extension}"
puts "name=#{name_without_extension}"
filename = "image.png"
directory = "docs"
path = File.join(directory, filename)
base = File.basename path
extension = File.extname path
name_without_extension = File.basename path, extension
puts "path=#{path}"
puts "base=#{base}"
puts "extension=#{extension}"
puts "name=#{name_without_extension}"
filename = "archive.tar"
directory = "docs"
path = File.join(directory, filename)
base = File.basename path
extension = File.extname path
name_without_extension = File.basename path, extension
puts "path=#{path}"
puts "base=#{base}"
puts "extension=#{extension}"
puts "name=#{name_without_extension}"
filename ← report.txt, directory ← docs, path ← docs/report.txt
1filename→ report.txt = "report.txt" #@filename="image.png", "archive.tar"2directory→ docs = "docs"34path→ docs/report.txt = File.join(directory, filename)docs/report.txt5base→ report.txt = File.basename pathreport.txt6extension→ .txt = File.extname path.txt7name_without_extension→ report = File.basename path, extensionreport89puts "path=#{pathdocs/report.txt}"10puts "base=#{basereport.txt}"11puts "extension=#{extension.txt}"12puts "name=#{name_without_extensionreport}"outputpath=docs/report.txt base=report.txt extension=.txt name=report
filename ← image.png, directory ← docs, path ← docs/image.png
1filename→ image.png = "image.png"2directory→ docs = "docs"34path→ docs/image.png = File.join(directory, filename)docs/image.png5base→ image.png = File.basename pathimage.png6extension→ .png = File.extname path.png7name_without_extension→ image = File.basename path, extensionimage89puts "path=#{pathdocs/image.png}"10puts "base=#{baseimage.png}"11puts "extension=#{extension.png}"12puts "name=#{name_without_extensionimage}"outputpath=docs/image.png base=image.png extension=.png name=image
filename ← archive.tar, directory ← docs, path ← docs/archive.tar
1filename→ archive.tar = "archive.tar"2directory→ docs = "docs"34path→ docs/archive.tar = File.join(directory, filename)docs/archive.tar5base→ archive.tar = File.basename patharchive.tar6extension→ .tar = File.extname path.tar7name_without_extension→ archive = File.basename path, extensionarchive89puts "path=#{pathdocs/archive.tar}"10puts "base=#{basearchive.tar}"11puts "extension=#{extension.tar}"12puts "name=#{name_without_extensionarchive}"outputpath=docs/archive.tar base=archive.tar extension=.tar name=archive