From Wiki

Ruby: FilesAndDirectories

#!/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&#305;n i�eri&#287;ini bir string'e kopyalamak
str = ""
open("dosya.txt") do |file|
	str = file.read
end
puts str

#Bir dosyan&#305;n belli bir byte'&#305;n&#305;n okunmas&#305;
open("dosya.txt") { |f| f.read(5) } #Dosyan&#305;n 5 bayte'&#305; okunur.

#Bir dosyan&#305;n var olup olmad&#305;&#287;&#305;n&#305;n kontrol edilmesi
#NOT: Sadece dosya kontrol� yapar, klas�ler i�in ba&#351;ka
#bir y�ntem kullan&#305;l&#305;r.
dosya = "dosya.txt"
if File.file? dosya
	puts "dosya.txt bulundu"
end

#Bir klas�r�n var olup olmad&#305;&#287;&#305;n kontrol edilmesi
if File.directory? "prj1"
	puts "prj1 bulundu"
end

#Bir dosya veya klas�r�n var olup olmad&#305;&#287;&#305;n&#305; kontrol edilmesi
if File.exists? "prj1"
	puts "prj1 bulundu"
end

#Bo&#351; bir dosya olu&#351;turulmas&#305;
require 'fileutils'
FileUtils.touch("dosya2.txt")

#Bir klas�r olu&#351;turulmas&#305;
if ! File.directory? "klasor1"
	FileUtils.mkdir("klasor1")
end

#Bir dosyan&#305;n okunabilir olup olmad&#305;&#287;&#305;n&#305; kontrol edilmesi
if File.readable? "dosya.txt"
	puts "dosya.txt okulabilir bir dosya"
end

#Bir dosyan&#305;n yaz&#305;labilir olup olmad&#305;&#287;&#305;n&#305; kontrol edilmesi
if File.writable? "dosya.txt"
	puts "dosya.txt yaz&#305;labilir bir dosya"
end

#Bir dosyan&#305;n �al&#305;&#351;t&#305;r&#305;labilir olup olmad&#305;&#287;&#305;n&#305; kontrol edilmesi
if File.executable? "dosya.txt"
	puts "dosya.txt �al&#305;&#351;t&#305;r&#305;labilir bir dosya"
end

#Bir dosyan&#305;n izinlerini de&#287;i&#351;tirilmesi
File.chmod(0664, "dosya.txt")

#Dosya tipinin bulunmas&#305;
puts File.ftype("dosya.txt")

#Bir dosyan&#305;n boyutu(byte olarak)
puts File.size("dosya.txt")

#Bir dosyan&#305;n silinmesi
if File.exists? "dosya.txt"
	File.delete "dosya.txt"
end

#Bir klas�r�n i�eri&#287;inin listelenmesi: 1. y�ntem
Dir.entries("/tmp").each { |f| puts f }

#Bir klas�r�n i�eri&#287;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&#351; olmas&#305; gerekiyor.
Dir.delete("klasor1") #veya Dir.rmdir("klasor1") veya Dir.unlink("klasor1")

#&#350;u an �al&#305;&#351;&#305;lan klas�r�n path'ininin bulunmas&#305;
puts Dir.pwd

#Ge�ici(tempfile) olu&#351;turulmas&#305;
require 'tempfile'
out = Tempfile.new("tempfile")
puts out.path
out << "heyyo"
out.close

#Ge�ici dosyan&#305;n&#305; ba&#351;ka bir dosyaya kaydedilmesi
require 'fileutils'
FileUtils.mv(out.path, "/tmp/my_tmp_file")

#Bir klas�r alt&#305;ndaki t�m dosyalar&#305;n listelenmesi
#NOT: Recursive �al&#305;&#351;&#305;r
require 'find'
Find.find("/tmp") { |path| puts path }

#dosya uzant&#305;s&#305;na g�re dosyalar&#305;n bulunmas&#305;
#.txt dosyalar&#305;n&#305;n bulunmas&#305;
require 'find'
Find.find("./") do |p| 
	ext = p[-4 ... p.size]
	if ext && ext.downcase == ".txt"
		puts "Buldum" + p
	end
end

#Ba&#351;ka bir klas�re ge�ilmesi
Dir.chdir("/home")
Dir.entries(".").each { |f| puts f }

#standart girdi'den (�r: klavye'den) girilenlerin 
#standart �&#305;kt&#305;ya(�r: ekrana) yaz&#305;lmas&#305;
$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
	#

Retrieved from http://kozgun.net/wiki/pmwiki.php?n=Ruby.FilesAndDirectories
Page last modified on November 29, 2006, at 11:01 PM