YAZI DOSYALARI VE İNDEKSLİ DOSYALAR
YAZI DOSYALARI:
Ardışık erişim organizasyonu ile oluşturulan dosyaların en yaygın tiplerinden biri yazı dosyalarıdır. Bu dosyalar, sembol ve kontrol kodlarından oluşan düz yazı dökümanlarını içerirler ve çoğunlukla ASCII kodlama sistemini kullanırlar.
Yazı dosyalarında mantıksal kayıtların boyutu tek bir bayt ile sınırlandırılmıştır. Yazı dosyalarını yazarken ya da okurken çoğu kez dökümandaki karakterler ekranda ya da yazıcıda görüldükleri sıra ile ele alınır.
İŞLEM YAZILIMLARI:
Yazı dosyalarının bilgisayar ortamında
saklanması ve erişimi için her biri
birden fazla baytdan oluşan fiziksel
kayıtlar oluşturulur. Fiziksel kayıtların
işlenmesi bu amaç için geliştirilen işlem
yazılımları aracılığı ile gerçekleştirilir.
Kullanıcı bir sembolü yazı dosyasına yazmak istediği zaman, işlem yazılımı bu sembolü sunan baytı alır ve onu tampon bölgede tutar. Semboller, bir fiziksel kaydı dolduruncaya veya kullanıcı dosya sonuna geldiğini belirtinceye kadar tampon bölgede biriktirilir. Fiziksel dosyalar doldukça, işlem yazılımı tarafından yığın saklama birimlerine geri götürülürler. Amaç diskteki giriş/çıkış işlemlerini azaltmaktır.
Programlamada Yazı Dosyaları:
Tüm üst düzey programlama dillerinde yazı dosyalarını işlemek için birçok yordam geliştirilmiş, bu yordamlar dilin birer parçası veya ek kütüphanesi olarak dilin içine dahil edilmiştir.
Aşağıdaki örneklerde Pascal, C ve C++ dillerinde yazı dosyalarını işlemek için birkaç yordam gösterilmektedir.
Örnek(Pascal):
read(EskiDosya,Sembol);
ifadesi, EskiDosya isimli dosyadan tek bir bayt okur ve bunu “Sembol” diye tanımlanmış değişkene atar.
Örnek2(Pascal):
write(YeniDosya,Sembol);
ifadesi sembol değişkeninin içerdiği değeri YeniDosya ismindeki bir dosyaya yazar.
Örnek2(C):
getc(EskiDosya,Sembol);
putc(YeniDosya,Sembol);
ifadeleri sırası ile EskiDosya’yı okur ve YeniDosya’ya yazar. Bu işlemleri gerçekleştirirken Sembol değişkenini kullanır.
Doğrudan Erişim:
Ardışık organizasyon ile oluşturulmuş bir dosyada, herhangi bir kaydın bulunması için, her seferinde baştan başlayarak arama yapmamız ve kaydı bulunca da istediğimiz bilgileri ekrana getirmemiz oldukça verimsiz bir yaklaşım olur. Bu yüzden dosyadaki gelişigüzel bir kayda erişimi sağlayan dosya organizasyonuna doğrudan erişim yöntemi kullanılır. En yaygın türlerinden biri indeksli dosyalardır.
İndeksli Dosyalar:
Bir dosya için oluşturulan indeks, o dosyanın anahtarları ile bu anahtarların yığın saklama biriminde bulunduğu adresi içerir.İşletim sistemlerinde de indeks organizasyonu, dosya rehberi ya da dizin oluşturmak için yaygın olarak kullanılır. İşletim sistemlerinde indeksler dosya kayıtlarındaki anahtar listelerini değil, dosyaların listelerini gösterirler.
İndeks Organizasyonu:
Yapılması gereken şey, istenen kaydın önce yaklaşık yerini, ardından da tam yerini arayıp bulan bir yapı oluşturmaktır. Bunun için, dosyadaki kayıtları önce ardışık olarak sıraya dizer, sonra bu kayıtları belirli aralıklar ile bölütlere ayırırız. Dosyadaki kayıt sayısı arttıkça bölüt sayısı, dolayısı ile indeks boyutu da artar. Büyük bir indeksin bilgisayar ortamında saklanması için kullanılan diğer bir yöntemde indeksin indeksini tutmaktır. Bunun için kısmi indeks yapısı kullanılır.
İndeksli Dosyaların Programlamada Kullanımı:
Üst düzey programlama dillerinin çok azı indeksli dosyaları destekler. Bunun sebebi gelişkin veri tabanı araçlarının bulunmasıdır.Ama yine de, programlama dillerinde indeksli dosya oluşturmak ve kullanmak için bazı kütüphane yordamı mevcuttur. Örneğin; C programlama dilindeki :
fsetpos(Çocuk,&Yer);
komutu Çocuk kimlikli dosyadaki o anda bulunulan pozisyona Yer değişkeninin aldığı değeri atar.