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.
File — fayllar bilan ishlash uchun Ruby’ning ichki o’rnatilgan klassi.
File.open,File.read,File.writekabi 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 yopadi — close 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.