Dosya işlemleri

Merhabalar. Bu yazımda PHP ile bir dosya nasıl oluşturulur dosya içeriği nasıl okunur dosyaya yeni bilgiler nasıl yazılır ondan bahsedeceğim.

Dosya işlemlerinde kullanılan başlıca fonksiyonlar fopen() , fread() , fwrite() , filesize() ,  file_get_content() , file_put_content() , fclose() dir. Bu fonksiyonların yanında dosya işlemleri ile ilgili bir çok fonksiyon mevcut bu fonksiyonların tamamına php.net(Dosya işlemleri için tıklayın.) adresinden ulaşabilirsiniz.

fopen() Fonksiyonu

Yolu belirtilen dosyayı işlem yapmak için açar. Dosyayı açmak için bir kip seçmelisiniz bu kip dosyanın hangi şartlar için açılacağını belirler.

$dosya = fopen('yenidosya.txt', 'r');
if ($dosya) {
echo 'Dosya okumak için açıldı';
} else {
echo 'Dosya okuma için açılamadı';
}

Burada fopen fonksiyonuna “r” parametresi vererek dosyanın sadece okuma için açılacağını belirtiyoruz. Eğer dosya varsa ve dosya izinleri okuma için izin veriyorsa dosya okumak için açılır ve true değerini döner.Eğer dosya yoksa veya dosya izinleri okumaya izin vermiyorsa false değerini döner.

$dosya = fopen('yenidosya.txt', 'w');
if ($dosya) {
echo 'Dosya oluşturuldu yazma için açıldı';
} else {
echo 'Dosya oluşturulamadı';
}

Burada fopen fonksiyonuna “w” parametresini vererek dosyanın yazma için açılmasını istedik.Eğer belirtilen dosya mevcut değilse dosya oluşturulur.

fwrite() Fonksiyonu

fopen() ile açılmış bir dosyaya 2.parametrede belirtilen metni yazar.

if (fwrite($dosya, 'Yeni dosya oluşturuldu')) {
echo 'Dosyaya "Yeni dosya oluşturuldu" yazıldı';
} else {
echo 'Yazma işlemi başarısız oldu';
}

fopen ile oluşturduğumuz ve yazma için açtığımız dosyaya fwrite fonksiyonu ile  “Yeni dosya oluşturuldu” metnini yazdık.

filesize() Fonksiyonu

Dosya yolu belirtilen dosyanın boyutunu bayt  olarak döner.

$dosyaBoyutu = filesize('yenidosya.txt');
echo 'Yeni oluşturduğumuz ve içine metin yazdığımızın şuanki  boyutu '.$dosyaBoyutu.' bayt.';

Çıktı:

Yeni oluşturduğumuz ve içine metin yazdığımızın şuanki boyutu 23 bayt.

fread() Fonksiyonu

fopen ile açılmış bir dosyanın içeriğini belirtilen uzunluk kadar okur ve string olarak döner.

$dosya = fopen('yenidosya.txt', 'r');
if ($dosya) {
echo 'Dosya okumak için açıldı</br>';
} else {
echo 'Dosya okuma için açılamadı</br>';
}
$dosyaBoyutu=filesize('yenidosya.txt');
$okunan=fread($dosya,$dosyaBoyutu);

echo 'yenidosya.txt dosyasının içeriği :'.$okunan.'</br>';

Çıktı :

Dosya okumak için açıldı
yenidosya.txt dosyasının içeriği :Yeni dosya oluşturuldu

Burada ikinci  parametre olarak dosya boyutunu yazdık , bu şekilde dosyanın tamamını okumasını sağladık. Bazı durumlarda dosyanın tamamı tek seferde okunmaya biliyor.Bu durumda bir while döngüsü ile dosya sonuna ulaşıp ulaşmadığını kontrol ettirip dosya sonuna gelene kadar dosyanın okunmasını sağlayabiliriz. Örnek olarak :

$dosyaBoyutu = filesize('yenidosya.txt');
$okunan = '';
while (feof($dosya)) {
$okunan .= fread($dosya, $dosyaBoyutu);
}

echo 'yenidosya.txt dosyasının içeriği :' . $okunan . '</br>';

fclose() Fonksiyonu
fopen() fonksiyonu ile açılmış dosya bağlantısını kapatmak için kullanılır.Eğer dosya kapatılmazsa dosya üzerinde başka işlen yapılamaz ve ek olarak gereksiz yere bellek harcamış olur.Bu yüzden fopen ile açtığınız bağlantıları işlemler bitince kapatmayı unutmayın.

$dosya = fopen('yenidosya.txt', 'r');
if ($dosya) {
echo 'Dosya okumak için açıldı</br>';
} else {
echo 'Dosya okuma için açılamadı</br>';
}
$dosyaBoyutu=filesize('yenidosya.txt');
$okunan=fread($dosya,$dosyaBoyutu);

echo 'yenidosya.txt dosyasının içeriği :'.$okunan.'</br>';
fclose($dosya);

file_get_content() Fonksiyonu

Dosya yolu belirtilen dosyanın içeriğinin tamamını okur ve string olarak döner.Dosyanın fopen ile açılması gerekmez.

$okunan = file_get_contents('yenidosya.txt');
echo 'yenidosya.txt dosyasının içeriği :' . $okunan . '</br>';

file_get_content fopen,fread ve fclose fonksiyonlarının sırası ile çalıştırılmış hali gibidir.

Çıktı :

<code>yenidosya.txt dosyasının içeriği :Yeni dosya oluşturuldu</code>

file_put_content() Fonksiyonu
Dosya yolu belirtilen dosyaya paremetrede belirtilen string i yazar.fopen ile dosyanın açılması gerekmez.

$icerik = "file_get_content fonksiyonu fopen,fwrite ve fclose fonksiyonlarının işlemlerini tek başına yaptığı için kullanımı  daha iyidir.\n
file_put_content fwrite fonksiyonuna göre daha hızlıçalışır.\n
dosyaya veri yazarken file_get_content fonksiyonunu kullanmanızı tavsiye ederim.";
file_put_contents('yenidosya.txt',$icerik);

$okunan=file_get_contents('yenidosya.txt');
echo $okunan;

Çıktı :

file_get_content fonksiyonu fopen,fwrite ve fclose fonksiyonlarının işlemlerini tek başına yaptığı için kullanımı daha iyidir. file_put_content fwrite fonksiyonuna göre daha hızlıçalışır. dosyaya veri yazarken file_get_content fonksiyonunu kullanmanızı tavsiye ederim.

Samet ATABAŞ

Sakarya Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği Mezunu.PHP Developer

Bir Yorum Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.