Image 01

B Tech Message Box

Your Message:
BICAST BTECH
Image 01
Image 01

PHP DOSYA İŞLEMLERİ

PHP dilinin root'unuzda dosya oluşturma ve silme, dosyaya ekleme, yönlendirme gibi pekçok farklı yeteneği vardır.



DOSYA İŞLEMLERİ

Bu sayfada yüzeysel ve basitleştirilmiş olarak açıklanmış PHP hakkındaki konular PHP resmi sayfasında örneklerle birlikte çok daha ayrıntılı açıklanmıştır. Bazen ayrıntı iyidir, bazen de basitlik..

Her zaman olması gerektiği gibi hata almamak için PHP sayfasının başlangıç ve bitiş sembol etiketlerine ayrıca iterasyonun yani algoritma adımının sona erdiğini ifade eden noktalı virgüllere (;) dikkat ediyoruz. Betiklerimizde kontrol yapıları ve hatta hata yakalama yöntemlerini kullanmanın yüksek kalite getireceğini hatırlatalım. Dosya işlemlerine tabiki dosya oluşturarak başlayacağız..

Dosya Oluşturmak

Dosya oluşturmak için touch() yerleşik fonksiyonunu kullanıyoruz.

touch("birdosya.txt");

Bu şekilde yazılmış kodu tarayıcı ile çalıştırdığınızda 'mevcut dizin içerisinde' birdosya.txt isimli ve uzantılı dosyanız oluşturulacaktır. Bir geliştirici olarak sizin yolu ve yolun altını yada üstünü seçebileceğinizi varsayıyoruz. Yinede kısaca bir hatırlatalım root'ta mevcut dizinin üzerindeki dizine yol vermek için, dosya yolunun başına '../birdosya.txt' getirilerek bir üst dizine ulaşılır. Aşağı ulaşmak içinse dosya yolunun başına klasör adı girilir birklasor/birdosya.txt

Dosya Varmıdır?

Bakalım gerçekten dosya oluşturuldu mu? Bu kontrol file_exists() yerleşik fonksiyonu ile yapılıyor.

if (file_exists("birdosya.txt")){
echo "Dosyaya ulaşıldı. Dosya zaten mevcut";
} else{
echo "Dosyaya ulaşılamadı. Dosya mevcut değil.";
}

Dosya Dosyamıdır?

Peki dosya gerçekten dosyamıdır? Yoksa şu kuantum olaylarındaki gibi bir anlık yansımadanmı ibaretti? Bu kontrol is_file() yerleşik fonksiyonu ile yapılmaktadır.

if (is_file("birdosya.txt")) {
echo "Kontrol: Dosya dosyadır.";
} else{
echo "Uyarı: Dosya dosya değildir.";
};

Dosya Okunabilirmi?

Dosyanın okunaklı olup olmadığı kontrolü is_readable() yerleşik fonksiyonu ile yapılıyor.

if (is_readable("birdosya.txt")) {
echo "Kontrol: Dosya okunabilir.";
} else{
echo "Uyarı: Dosya okunamıyor.";
};

Dosya Yazılabilirmi?

Dosyanın yazılabilir olup olmadığı kontrolü is_writable() yerleşik fonksiyonu ile yapılıyor.

if (is_writable("birdosya.txt")) {
echo "Kontrol: Dosya yazılabilir.";
} else{
echo "Uyarı: Dosya yazılamıyor.";
};

Dosyaya Yazmak

Yeni dosyamız şuan bomboştur. Hadi içerisine birşeyler yazalım. Algoritma şöyle olacak 1- Dosyayı açarak bağlan 2- Dosyadaki veriyi oku yada yaz 3- Dosyayı kapatarak bağlantıyı sonlandır.

touch("birdosya.txt");
$dosya = fopen("birdosya.txt", "r+");
fputs($dosya, "Geceler yar yar. \n");
fwrite($dosya, "Başımda sevdan..");
fclose($dosya);

Yukarıdaki kodlar içerisinde fputs() aynı işlevi gören fwrite() yerleşik fonksiyonunun lakabıdır. İki fonksiyonuda bunu açıklamak için kullandık. "\n" imleci alt satır başına geçiren kaçış dizisidir ve yalnızca çift tırnak içerisinde çalışır.

"r+" ile dosyayı hangi kipte açtığımızı belirttik.

fopen() Fonksiyonunun Parametreleri:

  • r Dosya sadece okumak için açılır. İmleç dosyanın başındadır.
  • r+ Dosya hem okumak hemde yazmak için açılır. Yani hem veri okuyabilir hemde dosyaya veri yazabiliriz. İmleç dosyanın başındadır.
  • W Dosya sadece yazmak için açılır. İmleç dosyanın başındadır. W parametresini kullandığımızda dosyada varolan veriler silinir ve bizim belirlediklerimiz yerlerine yazılır. Dosya yoksa oluşturulur.
  • W+ W parametresinin özelliklerine sahiptir. Farklı olarak dosyayı okuyabilir ve yazabilir.
  • a Dosya sadece yazmak için açılır. Dosya yoksa oluşturulur. İmleç dosyanın sonundadır. Dosyanın sonuna veri ekleyeceksek kullanılabilir.
  • a+ Dosya hem okumak hemde yazmak için açılır. İmleç dosyanın sonundadır. Dosya yoksa oluşturulur.

Dosyayı Okumak

Dosya içeriğini okuma işi için genellikle fread() ve ardından fgets() yada feof() fonksiyonlarından biri kullanılıyor. Bu sayede eklediğimiz şarkı sözlerini tarayıcımızla ekrana yazdırabileceğiz.

$mosya = fopen("birdosya.txt", "r");
echo fread($mosya, 1024);
fclose($mosya);

İşlem adımları yazmak ile aynı aç, oku/yazdır, kapat. Yöntemlerimizde değişkene atamak gibi kolaylıklar içeriyor. Burada dikkat edeceğimiz şey 1024'ün ne olduğudur. 1024 Byte = 1 KiloByte.. Burada dosyadan kaç byte veri okuyacağımızı belirtiyoruz.

Byte'lar çok ilginç varlıklardır. Bu yazıyı yazarken kullandığımız herbir harf genellikle 1 Byte olur abcde bitişik yazıldığında genellikle 5 Byte olur. Fakat okutacağımız dosyanın sonuna kadar Byte'ları tek tek saymanın hem mantıksız hemde bazen olanaksız olması gibi nedenlerle aşağıda kullanımı açıklanacak filesize() isimli fonksiyonu kullanmak daha akıllıcadır.

Açtığımız her bağlantıyı mutlaka fclose() yerleşik fonksiyonu ile kapatıyoruz.

Diğer Dosya Okuma Yöntemleri 1

feof() fonksiyonu döngü ile birlikte kullanıldığında dosya boyutu ne olursa olsun dosyayı sonuna kadar okuyabilir.

$dosya1 = fopen("birdosya.txt", "r");
echo "Birinci yöntem";
while(!feof($dosya1)) {
echo fread($dosya1, 1024);
}
fclose($dosya1);

Diğer Dosya Okuma Yöntemleri 2

fgets() fonksiyonu dosyayı satır satır sonuna kadar okuyabilir..

$dosya2 = fopen("birdosya.txt", "r");
echo "İkinci yöntem";
while(!feof($dosya2)) {
echo fgets($dosya2);
}
fclose($dosya2);

Diğer Dosya Okuma Yöntemleri 3

fpassthru() fonksiyonu ile döngüye gerek kalmaksızın dosyayı okuyabiliriz. Yalnızca dosyayı açıp bağlanarak oluşturduğumuz değişkeni yazıyoruz ve işlem tamamlandığında kapatıyoruz..

$dosya3 = fopen("birdosya.txt", "r");
fpassthru($dosya3);
fclose($dosya3);

Diğer Dosya Okuma Yöntemleri 4

readfile() fonksiyonu dosya okumak için en kestirme yöntemdir ne döngüye ne de açma kapamaya ihtiyacımız yok..

readfile("birdosya.txt");

Dosyanın Boyutunu Bulmak

filesize() fonksiyonu dosya boyutunu bulmak için aşağıdaki gibi kullanılır. Gelen cevap Byte cinsindendir. 1 Byte 8 bittir (yani 1 yada 0'dan oluşan bit isimli varlık) kadardır. 1024 Byte 1 KiloByte eder bu demektirki sonucu KiloByte cinsinden istiyorsanız atadığınız değişkeni 1024'e bölerek yankılatmalısınız..

$boyut = filesize("birdosya.txt");
echo $boyut;

Ayrıca gelen sonuç tam sayıdır. (integer) Bunun sağlamasını değişken türleri hakkında bilgi veren gettype() fonksiyonu ile yapabilirsiniz. Bu önemlidir çünkü filesize() komutu çıktısıyla aşağıdaki gibi bir aritmetik işlem yapabilirsiniz. Aşağıdaki gibi bir kod, dosyaları okurken yada ekleme yaparken onlara şekil vermenizde çok işe yarayabilir.

$mosya = fopen("birdosya.txt", "r");
echo fread($mosya, filesize("birdosya.txt")-280);
fclose($mosya);

İmleci Dosyada Gezdirmek

fseek() fonksiyonu imlecin dosya içerisinde istenilen konuma getirilmesini sağlar. İkinci parametresi yine Byte cinsindendir ve aşağıdaki gibi kullanılır..

$dosya = fopen("birdosya.txt", "r+");
fseek($dosya, filesize("birdosya.txt")-55);
fwrite($dosya, "Merhaba ben Barak..");
fclose($dosya);

Dosyayı ekleme modunda açtık, fseek() ile "SONDAN" 55.nci Byte'a imleci getirerek bu noktanın ardından fwrite() ile eklememizi yaptık.

Dosyaya Son Erişim Zamanı

fileatime() fonksiyonu dosyaya en son ne zaman erişildiğini gösterir. Sonucu 10 haneli bir sayı olarak döndürür.

echo fileatime("birdosya.txt");

Bu sayı aslında saniyeleri ifade eden bir timestamp yani zaman puludur. Zaman pullarını okunaklı hale getirmek için date() fonksiyonunu kullanırız.

echo date("d M Y H:i:s", fileatime("birdosya.txt"));

Dosyadaki Son Değişim Zamanı

filectime() fonksiyonu dosyanın en son ne zaman değiştirildiğini gösterir. Sonucu yine 10 haneli bir zaman pulu sayısı olarak döndürür.

echo date("d M Y H:i:s", filectime("birdosya.txt"));

Dosyadaki Son Düzenleme Zamanı

filemtime() fonksiyonu dosyanın en son ne zaman düzenlendiğini gösterir. Sonucu yine 10 haneli bir zaman pulu sayısı olarak döndürür.

echo date("d M Y H:i:s", filemtime("birdosya.txt"));

Dosyamı Klasör mü?

filetype() fonksiyonu varlığın dosyamı klasörmü olduğunu gösterir. Çıktısı file veya dir olarak iki sonuç verir.

echo filetype("birdosya.txt");
echo filetype("birklasor");

Dosya Kopyalamak

Dosya kopyalama işi copy() fonksiyonu ile yapılır. DİKKAT Eğer hedef klasörde aynı isimli bir dosya varsa o silinir ve yenisi kopyalanır. Aynı klasör içine de kopyalama yapılabilir.

copy("birdosya.txt", "birklasor/birdosya.txt");

Yukarıda görüldüğü gibi önce kaynağı, virgülün ardından ise hedefi str olarak belirtiyoruz. Kod tarayıcıda çalıştırıldığında izinler ile ilgili kısıtlama yoksa kopyalama işlemi tamamlanır. Kopyalama upload işlemlerinde sıklıkla kullanılır.

glob() FONKSİYONU

glob() fonksiyonu klasörde yer alan dosya ve dizinleri listelemektedir. Bu fonksiyonun çıktısı dizi şeklindedir.

glob("*.*");
glob("*.html");

Yukarıdaki ilk kod çalışılan klasördeki tüm dosyaları listeler. İkinci kod ise yalnızca hmtl uzantılı dosyaları listeler. glob() çıktısı dizi değişken (array) olduğundan foreach kullanarak aşağıdaki gibi düzenli ve kolayca kullanabiliriz.

$dosyalar = glob("*.*");
print_r($dosyalar);
foreach($dosyalar as $liste) {
echo $liste . "< br>"; }

NOT: Dizinleri de görüntülemek için fonksiyonu glob("*") şeklinde kullanmalısınız.

Dosyayı Yeniden Adlandırmak

rename() fonksiyonu dosyanın ismini yeniden adlandırmaya yarar. Kullanımı kaynak isim virgül hedef isim şeklindedir:

rename("birdosya.txt", "yenibirdosya.txt");
ANASAYFA | EKONOMETRİ | FLORA | B TECH | İNŞAAT | ASTRONOMİ | KLE-M | FORUM-B |

©2024 Yılında Yayın Hayatına Başladı baraqweb@yaani.com - İçeriği Özgün ve Her Hakkı Saklıdır BARAK Software Tasarım