#!/usr/bin/ruby # # files and directories # #dosyayı yazmak i�in a�mak, dosyanın i�eriği silinir ve baştan itibaren #yeniden yazılır. open("dosya.txt", "w") do |file| file.write "satir 1\n" file.puts "satir 2" end #mevcut bir dosyayı satır satır okumak i�in open("dosya.txt") do |file| file.each { |l| puts l } end #Dosyanın sonuna ekleme yapılması open("dosya.txt", "a") do |file| file << "satir 3\n" end #mevcut bir dosyanın i�eriğini bir string'e kopyalamak str = "" open("dosya.txt") do |file| str = file.read end puts str #Bir dosyanın belli bir byte'ının okunması open("dosya.txt") { |f| f.read(5) } #Dosyanın 5 bayte'ı okunur. #Bir dosyanın var olup olmadığının kontrol edilmesi #NOT: Sadece dosya kontrol� yapar, klas�ler i�in başka #bir y�ntem kullanılır. dosya = "dosya.txt" if File.file? dosya puts "dosya.txt bulundu" end #Bir klas�r�n var olup olmadığın kontrol edilmesi if File.directory? "prj1" puts "prj1 bulundu" end #Bir dosya veya klas�r�n var olup olmadığını kontrol edilmesi if File.exists? "prj1" puts "prj1 bulundu" end #Boş bir dosya oluşturulması require 'fileutils' FileUtils.touch("dosya2.txt") #Bir klas�r oluşturulması if ! File.directory? "klasor1" FileUtils.mkdir("klasor1") end #Bir dosyanın okunabilir olup olmadığını kontrol edilmesi if File.readable? "dosya.txt" puts "dosya.txt okulabilir bir dosya" end #Bir dosyanın yazılabilir olup olmadığını kontrol edilmesi if File.writable? "dosya.txt" puts "dosya.txt yazılabilir bir dosya" end #Bir dosyanın �alıştırılabilir olup olmadığını kontrol edilmesi if File.executable? "dosya.txt" puts "dosya.txt �alıştırılabilir bir dosya" end #Bir dosyanın izinlerini değiştirilmesi File.chmod(0664, "dosya.txt") #Dosya tipinin bulunması puts File.ftype("dosya.txt") #Bir dosyanın boyutu(byte olarak) puts File.size("dosya.txt") #Bir dosyanın silinmesi if File.exists? "dosya.txt" File.delete "dosya.txt" end #Bir klas�r�n i�eriğinin listelenmesi: 1. y�ntem Dir.entries("/tmp").each { |f| puts f } #Bir klas�r�n i�eriğinin listelenmesi: 2. y�ntem dir = Dir.open("/tmp") begin dir.each do |f| puts f end ensure dir.close end #Bir klas�r�n silinmesi #NOT: Klas�r�n i�inin boş olması gerekiyor. Dir.delete("klasor1") #veya Dir.rmdir("klasor1") veya Dir.unlink("klasor1") #Şu an �alışılan klas�r�n path'ininin bulunması puts Dir.pwd #Ge�ici(tempfile) oluşturulması require 'tempfile' out = Tempfile.new("tempfile") puts out.path out << "heyyo" out.close #Ge�ici dosyanını başka bir dosyaya kaydedilmesi require 'fileutils' FileUtils.mv(out.path, "/tmp/my_tmp_file") #Bir klas�r altındaki t�m dosyaların listelenmesi #NOT: Recursive �alışır require 'find' Find.find("/tmp") { |path| puts path } #dosya uzantısına g�re dosyaların bulunması #.txt dosyalarının bulunması require 'find' Find.find("./") do |p| ext = p[-4 ... p.size] if ext && ext.downcase == ".txt" puts "Buldum" + p end end #Başka bir klas�re ge�ilmesi Dir.chdir("/home") Dir.entries(".").each { |f| puts f } #standart girdi'den (�r: klavye'den) girilenlerin #standart �ıktıya(�r: ekrana) yazılması $stdin.each { |l| puts l } #veya #$stdin.each { |l| $stdout.puts l } #Kaynaklar: #O'Reilly Ruby Cookbook #/usr/share/doc/ruby-manual/html/File.html #/usr/share/doc/ruby-manual/html/Dir.html #