PHP ile Dosya Okuma Ve Yazma, PHP dilinde dosya okuma ve yazma işlemleri çok basit bir şekilde gerçekleşiyor makale devamında örnekli bir şekilde dosya içeriğinin nasıl okunduğunu ve sayfaya yazdırıldığı son olarakda dosyaya yazma işleminin nasıl yapıldığını göreceğiz.
PHP ile dosya okuma ve yazma işlemlerini gerçekleştirme
Dosya okuma ve yazma işlemlerini gerçekleştirmek için fopen
fonksiyonunu kullanacağız. while
döngüsünde son satıra gelinip gelinmediği feof
fonksiyonu ile kontrol edilerek satır satır çekme işini ise fgets
fonksiyonu ile gerçekleştireceğiz personeller.txt
adlı dosyamızda personele ait bilgileri her satırda ,
ile ayırıyoruz fgets
ile almış olduğumuz satırı explode
fonksiyonunu kullanarak , karakterine göre parçalanmasını isteyeceğiz bu durumda array
içinde bize 4 kayıt dönecek.
fopen Sözdizimi
1 | resource fopen ( string $dosyaismi , string $kip [, bool $include_path_kullan = false [, resource $bağlam ]] ) |
İlk parametreye dosyanın adı veriliyor altta yer alan örnek kodda personeller.txt
dosyasını parametre olarak geçtiğimizi görebilirsiniz eğer fopen
kodunu yazdığınız php
dosyası ile personeller.txt
dosyası aynı dizinde ise başına herhangi bir ek getirmenize gerek yok fakat farklı bir disk konumunda ise örnek personeller.txt
dosyasının C
diski altında olduğunu düşünürsek o zaman parametreye c:\personeller.txt
şeklinde yazmanız gerekmektedir. ikinci parametreye ise dosyanın hangi amaçla kullanılacağı düşünülüyorsa o şekilde bir değer yazılmalıdır örnek vermek gerekirse biz alttaki örnek php
kodumuzda r
karakterini parametre olarak geçmişiz buda şu demek oluyor “Akım sadece okumak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir.” diğer farklı $kip
türleri için alttaki tabloyu kontrol edip işleminize uygun olan değeri yazabilirsiniz.
fopen() Fonksiyonunun Kip Parametresine Belirtilebilecek Kip Çeşitleri
Kip | Açıklama |
---|---|
‘r’ | Akım sadece okumak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. |
‘r+’ | Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. |
‘w’ | Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır. |
‘w+’ | Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır. |
‘a’ | Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır. |
‘a+’ | Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır. |
‘x’ | Dosya oluşturulur ve sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() FALSE döndürürek başarısız olur ve E_WARNING seviyesinde bir hata üretir. Dosya mevcut değilse oluşturulmaya çalışılır. Bu işlem, open(2) sistem çağrısı için O_EXCL|O_CREAT seçeneklerini belirtmeye eşdeğerdir. |
‘x+’ | Dosya oluşturulur ve hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() FALSE döndürürek başarısız olur ve E_WARNING seviyesinde bir hata üretir. Dosya mevcut değilse oluşturulmaya çalışılır. Bu işlem, open(2) sistem çağrısı için O_EXCL|O_CREAT seçeneklerini belirtmeye eşdeğerdir. |
Personeller.txt Dosyası İçeriği
1 2 3 4 5 | Murat,Öner,Kocaeli,25 Kasım,Bozdemir,Bursa,23 Hakan,Güner,Denizli,24 Burak,Arıcı,İstanbul,23 Mücahit,Akça,İstanbul,23 |
Şimdi Personeller.txt
dosyası içerisindeki verileri satır satır çekip ,
karakterine göre parçalayıp ekrana nasıl yazdırdığımızı görelim.
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php //Türkçe karakter sorunu için kullandığımız Content-Type HTTP header'i header('Content-Type: text/html; charset=utf-8'); $file = fopen("personeller.txt", "r"); $i = 0; while (!feof($file)) { $thisLine = fgets($file); $personData[$i] = explode(",", $thisLine); $i++; } //Dosya ile ilgili yapacak işimiz bitti ise fclose fonksiyonuna $resource değişkenini parametre olarak geçiyoruz. fclose($file); for ($i = 0; $i < sizeof($personData); $i++) { for ($j = 0; $j < sizeof($personData[$i]); $j++) { echo $personData[$i][$j] . ($j == sizeof($personData[$i]) - 1 ? "" : ", "); } echo "<br>"; } ?> |
Sonuç
1 2 3 4 5 | Murat, Öner, Kocaeli, 25 Kasım, Bozdemir, Bursa, 23 Hakan, Güner, Denizli, 24 Burak, Arıcı, İstanbul, 23 Mücahit, Akça, İstanbul, 23 |
Php ile dosya okuma ve yazma işlemlerinin en basit şekilde konuyu karmaşıklaştırmadan anlatmaya çalıştım umarım faydalı olmuştur.