Navigate / search

Php – fseek() ftell() rewind() – Dosyanın İstediğimiz Bölümünü Okuma

Dosya okuma işlemlerinde okuma işlemini tamamen olsada satır satır veya karakter karakter yapsakta, işlemlere hep en baştan başladık.Peki okuma yaparken dosya içinden istediğimizi bir yeri okumak için ne yapmalıyız.Bu işlemde kullanacağımız 3 fonkiyonumuz var.İlk önce bu fonksiyonları kısa kısa tanıyalım.

Ufak birde hatırlatma yapalım.Bu üç fonksiyonda file pointer olarak çalışır.

fseek():

Okuma işlemine başlayacağımız karakter sırasını bu komut ile belirleriz.Kısacası imlecimizi o karaktere almış oluruz.

fseek($dosyapointer,20)  // İmleci 20. karakterin önüne taşır.

ftell():

İmlecimizin o anda kaçıncı karaterin önünde olduğunu söyler.

echo tell($dosyapointer); // imlecimiz kaçıncı karakterin önündeyse o sayıyı verir.

rewind();

İmlecimizin bulunduğu pozisyonu sıfırlar.

rewind($dosyapointer); // İmlecimizi 0. pozisyona getirdi.

Şimdi bunları bir örnek ile inceleyelim.okuma işlemini yaparken fread komutunu kullanıp kaç karakter okuyacağımızı belirteceğiz.şimdi örnek txt dosyamızı oluşturalım.File pointer ile dosyamızı açalım.

dosya.txt

Satır 1
Satır 2
Satır 3
Satır 4
1
2
3
4
5
6
7
$dosyaadi="dosya.txt";
$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");
echo "İmlecimiz İlk Anda Şu Konumda  : ".ftell($dosyapointer)."<br>"; // imlecimizin konumunu verecek..
fseek($dosyapointer,3); // imlecimizi 3. karakterin önüne alacak.
$okunan=fread($dosyapointer,2); // 3. karakterden itbaren 2 karakter okur.
print "Okunan : ".$okunan;
echo "İmlecimiz Son Anda Şu Konumda  : ".ftell($dosyapointer)."<br>"; // imlecimizin konumunu verecek..

Unutmamanız gerek bişey var.bir sonraki satıra geçerken bir karakter fazla yazmayı unutmayın çünkü “yeni satır” işleminide bir karakter olarak algılıyor.

Php – file() ile Dosyayı Satır Satır Diziye Taşımak

2 3 ders önce işlediğimiz file_get_contents() fonksiyonunu bir hatırlayalım.

Dosyamızı Şu şekilde oluşturulalım ve dosya.txt olarak php dosyamızla aynı dizine kaydedelim.
dosya.txt

Satır 1
Satır 2
Satır 3
Satır 4

şimdi bu dosyamızı file_get_contents ile okuyup yazdıralım.

1
2
3
$dosyaismi="dosya.txt";
$okunan=file_get_contents($dosyaismi);
print "Okunan Veri : "$okunan;

Sonuç aşağıdaki gibi bir seferde dosyamızın okunmasıyla sonuçlanacaktır.

Okunan Veri : Satır 1 Satır 2 Satır 3 Satır 4

Şimdi aynı işlemi file() komutumuz ile yapalım.

1
2
3
$dosyaismi="dosya.txt";
$okunan=file($dosyaismi);
print "Okunan Veri : "$okunan;

Bu sefer sonuç olarak $okunan değişkeninin bir dizi olduğunu göreceğiz.

Okunan Veri : Array

Şimdi foreach döngüsüyle dizi elemanlarını bir bir yazdıralım.Ve kodlarımız son aşamaya gelsin.

1
2
3
4
5
6
$dosyaismi="dosya.txt";
$okunan=file($dosyaismi);
foreach($okunan as $sira => $satir)
       {
       print "Okunan : $sira - $satir <br>";
       }

Sonuç…

Okunan : 0 - Satır 1
Okunan : 1 - Satır 2
Okunan : 2 - Satır 3
Okunan : 3 - Satır 4

Satır numaralarıyla birlikte dosyanın içerğini yazdırmış olduk.

Şimdi durumu biraz farklılaştırıp karşınıza çıkabilecek örneklerden birtanesini yapalım.
Okuduğumuz dosyadan belirli bir satırdaki veriyi okuyalım sadece.Nasılmı yapacağız ?
file() fonksiyonundan dönen değer bir dizi değilmidir.O zaman dizinin indisi ile çağıracağız.Dizi indisleri 0′dan başladığı için dizimizin ilk yani 0. elemanı dosyamızın birinci satırını işaret ediyor olacak.
Aşağıdaki kodları incelemenizi tavsiye ediyorum.Php ile uğraşıyorsanız mutlaka karşınıza çıkar.

Bu kodlarda yukarda verdiğimiz dosya.txt’deki 2 satırı almak istedik.Bu yüzden indisimizi 1 olarak yazıyoruz.

1
2
3
$dosyaismi="dosya.txt";
$okunan=file($dosyaismi);
print "Okunan Veri : "$okunan[1];

sonuç olarak 2. satırı yazacaktır ekrana….

Php – fgets() fgetc() fread() Dosyadan Bilgi Okuma

fgets() fgetc() fread() Dosyadan Bilgi Okuma

Dosyadan bilgi okuma konusunda şimdi göreceğimiz komut dosyanın tamamını bir seferde okumamaktadır.Bu komutlar ise satır satır veya karakter karakter okurlar.

fgets($dosyaadi); // Dosyayı satır satır okur.
fgetc($dosyaadi); // Karakterleri teker teker okur
fread($dosyaadi,3); // Dosyayı belirtilen karakterden sayısı kadar okur

Bu 3 komutuda kullanırken file pointer kullanmamız gerekmektedir.Bunların yanı sıra bu komutlarla ile dosyadan okuma yaparken dosyanın bitip bitmediğini anlamamız için şu ana kadar işlemediğimiz bir yöntem göreceğiz.Bu işlemi yaparken while döngüsünden faydanalanacağız.While döngüsünü unutanlar aşağdaki linkteki konuya bir göz atabilirler.

While Döngüsü

Metin dosyamızı şu şekilde oluşturalım;

Satır 1
Satır 2
Satır 3
Satır 4

İlk önce file pointer ile dosyamızı açıyoruz.

$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");

Şimdi fgets() fonskiyonunu bir deneyelim

$dosyaadi="dosya.txt";
$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");
$okunan=fgets($dosyapointer);
print $okunan;
fclose($dosyapointer);

fgets komutunun çalışmasından sonra ekranda şu cevabı alacağız;

Satır 1

komutu 3 kere daha çalıştırmamız lazım dosyanın tamamını okuyabilmemiz için.Ama dosyanın nerede bittiğini her zaman bilemiyebiliriz.Oyüzden farklı bi mantıkla bu işlemi dosya sonuna gelinceye kadar sürdürmeye devam edicez.Bu işlemi while döngüsü ile yapacağız.Döngü şartımız ise;

(! feof ($dosyapointer))

olacak.
Şartın anlamı;Açılan dosyanın sonuna geldik mi ? ,cevabı ise false olacak ” ! ” ünlem işareti ilede şartı true olarak çevireceğiz.Yani şart geçerli olduğu sürece döngü dönmeye devam edecek.Dosya sonuna geldiğimizde ise feof’ten dönen yanıt true olacak.Fakat başında bir ünlem olduğu için bunu false olarak çevirecek.Yani dosya sonuna geldiğimiz zaman while şartı false olacağından döngü duracak.

Şimdi bunu program üstünde görelim.

$dosyaadi="dosya.txt";
$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");
while (! feof($dosyapointer))
       {
       $okunan=fgets($dosyapointer);
       print $okunan."";
       }
fclose($dosyapointer);

Sonucumuz şu şekilde olacaktır;

Satır 1
Satır 2
Satır 3
Satır 4

Şimdi gelelim fgetc komutunda.Kodlarımızda sadece fgets yerine fgetc yazıyor.Sonucumuz şu şekilde oluyor.

S
a
t
ı
.
.
.
ı
r
 
4

Gördüğünüz gibi fgetc dosyayı karakter karakter okudu.

Şimdi ise fread komutunu inceleyelim.fread komutunda aynı bir parametre kullanmamız gerecek.Komutun orjinalini şu şekilde değiştirin kaydedin ve çalıştırın.

fread($dosyaadi,4)

Sonucumuz böyle olacaktır.

Satı
r 1S
atır
 2S
atır
 3S
atır
 4

fread komutuda her çalıştığında belirttiğimiz karakter sayısı kadar veri aldı.

PHP – file_get_contents () Tüm Dosyayı Bir Kerede Okumak

file_get_contents () Tüm Dosyayı Bir Kerede Okumak

Dosya ve dizin işlemleri ile ilgili önceki derslerimizde dosyaya farkı metodlarla yazmayı öğrenmiştik.Şimdi Dosyada okumayı göreceğiz.Dosyadan okumak için gerekli olan fonksiyonumuz file_get_contents () fonksiyonudur.

Komutun Kullanımı;

file_get_contents("dosya_adi");

İlk önce önce php dosyamızla aynı dizinde bir metin belgesi oluşturalım ve adını dosya.txt olarak değiştirelim.Metin belgemizin içine istediğimiz birşey yazabiliriz denemek için.Hatta bi kaç farklı satıra yazalım.

dosya.txt

Ocak
Şubat
Mart
Nisan

Şimdi bu dosyayı okumaya geldi sıra;
file_get_contents fonskiyonuyla okunan veriyi bir değişkene aktarıyoruz.Sonra print işlemi ile okunan veriyi yazdırıyoruz.

1
2
3
4
$dosyaadi="dosya.txt";
$okunan=file_get_contents($dosyaadi);
print "$dosyaadi 'den okunan veriler.";
print "$okunan";

Php – is_file() , is_dir() Dosya mı ? Dizin mi ?

Dosya ve Dizin İşlemleri – is_file() , is_dir() Dosya mı ? Dizin mi ?

Bazı durumlarda dizin isimleri dosya isimleri gibi isimlendirilebilir.Örneğin bir dizine “deneme.txt” adı verilmiş ise bunu açmaya çalıştığımızda hata alırız.Bu yüzden bu ismin bir dosya olup olmadığını sorgulamamız gerekir.Aynı şekilde dizinmi diyede sorgulayabiliriz.

Php’ye bu bir dosyamı sormak için;

1
2
3
4
5
if (is_file("dosya.txt")) {
      echo "Bu Bir Dosyadır";
}else{
      echo "Bu Bir Dosya Değildir.";
}

Php’ye bu bir dizinmisormak için;

1
2
3
4
5
if (is_dir("dosya.txt")) {
      echo "Bu Bir Dizindir";
}else{
      echo "Bu Bir Dizin Değildir.";
}