Darsliklar Ruby Fayllar bilan ishlash

Ruby Ruby Fayllar bilan ishlash

Fayllar bilan ishlash — ma’lumotni dastur yopilgandan keyin ham saqlab qolish usuli. O’zgaruvchilar dastur tugashi bilan yo’qoladi, fayldagi ma’lumot esa diskda qoladi. Ruby’da bu vazifani File klassi bajaradi.

Filefayllar bilan ishlash uchun Ruby’ning ichki o’rnatilgan klassi. File.open, File.read, File.write kabi metodlar orqali fayl yaratish, o’qish va yozish amalga oshiriladi.

Faylga yozish

Eng sodda usul — File.write, u faylni yaratadi (yoki mavjudini butunlay almashtiradi) va butun matnni bir amalda yozadi:

File.write("hisobot.txt", "UzbekDevs hisoboti\nBall: 95\n")
puts "Fayl yozildi"
Fayl yozildi

Agar hisobot.txt mavjud bo’lmasa, Ruby uni avtomatik yaratadi. Mavjud bo’lsa, uning eski tarkibi butunlay yangisi bilan almashadi.

Fayldan o’qish

File.read esa butun fayl tarkibini bitta satr sifatida qaytaradi:

tarkib = File.read("hisobot.txt")
puts tarkib
UzbekDevs hisoboti
Ball: 95

Katta fayllarni qatorma-qator o’qish kerak bo’lsa, File.readlines("hisobot.txt") har bir qatorni massiv elementi sifatida qaytaradi.

Blok bilan ishlash — avtomatik yopilish

File.open blok bilan chaqirilsa, Ruby faylni blok tugagach avtomatik yopadiclose chaqirishning hojati yo’q:

File.open("hisobot.txt", "a") do |fayl|
  fayl.puts "Yangi yozuv qo'shildi"
end

puts File.read("hisobot.txt")
UzbekDevs hisoboti
Ball: 95
Yangi yozuv qo'shildi

"a" (append) rejimi — mavjud tarkibni o’chirmasdan, oxiriga qo’shadi. Blok shaklidan foydalanish tavsiya etiladi: hatto blok ichida xato yuz bersa ham, Ruby faylni baribir to’g’ri yopadi.

Ochish rejimlari

File.open ikkinchi argumenti orqali fayl qanday maqsadda ochilishini belgilaydi:

Rejim Vazifasi
"r" faqat o’qish (standart)
"w" yozish, eski tarkibni o’chiradi
"a" oxiriga qo’shish
"r+" o’qish va yozish

Faylni tekshirish va o’chirish

Mavjud bo’lmagan faylni o’qishga urinish xato beradi, shuning uchun oldindan tekshirish kerak. Faylni o’chirish uchun esa File.delete ishlatiladi:

if File.exist?("hisobot.txt")
  puts "Fayl mavjud, hajmi: #{File.size('hisobot.txt')} bayt"
  File.delete("hisobot.txt")
  puts File.exist?("hisobot.txt")
end
Fayl mavjud, hajmi: 50 bayt
false

File.exist? — faylning mavjudligini xavfsiz tekshiradi. File.delete uni o’chiradi; o’chirilgach, File.exist? endi false qaytaradi. Ishlab chiqarish kodida faylni o’chirishdan oldin har doim mavjudligini tekshirish yaxshi amaliyot hisoblanadi.