Lucrul cu Fișiere și Directoare în Ruby: Clasele File, Dir și FileUtils în Ruby

Ghid complet pentru I/O pe disc în Ruby: citirea și scrierea fișierelor cu File.read și File.open, navigarea prin directoare cu Dir.glob și manipularea căilor cu FileUtils.

Sintaxă
File.read("date.txt"); File.open("log.txt", "a") { |f| f.puts(msg) }; Dir.glob("**/*.rb")

Ruby simplifică operațiile cu sistemul de fișiere prin clasele încorporate File, Dir și biblioteca standard fileutils. Utilizarea blocurilor la deschiderea fișierelor garantează închiderea automată a descriptorilor de fișiere chiar și în caz de eroare.

Citirea și scrierea fișierelor în mod idiomatic
# 1. Citire dintr-o singură linie (slurp complet):
continut = File.read("config.ini", encoding: "UTF-8")
linii = File.readlines("utilizatori.csv", chomp: true) # elimină automat \n

# 2. Scriere sigură cu bloc (garantează flush și close automat):
File.open("raport.txt", "w:UTF-8") do |f|
    f.puts "=== RAPORT GENERAL ==="
    f.puts "Generat la data: #{Time.now}"
    f.printf("Total articole procesate: %d\n", 1250)
end

# 3. Verificări și metadate de fișier:
cale = "raport.txt"
if File.exist?(cale)
    puts "Mărime: #{File.size(cale)} octeți"
    puts "Ultima modificare: #{File.mtime(cale)}"
    puts "Extensie: #{File.extname(cale)}"       # .txt
    puts "Nume bază: #{File.basename(cale)}"     # raport.txt
end
Căutarea fișierelor cu Dir.glob și operații pe directoare
# Căutare recursivă a tuturor fișierelor Ruby din proiect:
fisiere_rb = Dir.glob("**/*.rb")
puts "S-au găsit #{fisiere_rb.length} fișiere Ruby."

# Crearea și ștergerea directoarelor cu FileUtils:
require "fileutils"

FileUtils.mkdir_p("backup/arhive/2026") # creează întregul arbore de directoare
FileUtils.cp("raport.txt", "backup/arhive/2026/raport_salvat.txt")