Transcript Powerpoint

PHP-Dosya ve Dizinler
Internet Tabanlı Programlama
Dr. Erman Yukselturk
Dosya Ayrıştırma
Bir yoldaki (path) dosya adını alma
$yol = "/home/www/data/users.txt";
printf("Dosya Adı: %s <br />", basename($yol));
printf("Uzantı içermeyen dosya adı: %s <br />",
basename($yol, ".txt"));
Bir yoldaki (path) dosya dizini alma
printf("Klasör yolu: %s", dirname($yol));
//Klasör yolu: /home/www/data
Dosya Ayrıştırma
$yolBilgisi = pathinfo("/home/www/htdocs/book/chapter10/index.html");
printf("Dir name: %s <br />", $yolBilgisi['dirname']);
printf("Base name: %s <br />", $yolBilgisi['basename']);
printf("Extension: %s <br />", $yolBilgisi['extension']);
Dosya Boyutu
$dosya = "WinRAR_362_FULL_McyargiC.exe";
$bytes = filesize($dosya);
$kilobytes = round($bytes/1024, 2);
printf("%s dosyasi $bytes bytes, veya %.2f kilobytes veya %.2f
megabytes.", basename($dosya), $kilobytes, round($kilobytes/1024,
2));
Dosya Ayrıştırma
Kalan alan hesaplama
$dizin = "F:\Program Files\EasyPHP5.3.0\www\BilgisayarI";
printf("Hard diskte kullanmaya hazır alan= <b> %s</b>: %.2f MB",
$dizin, round((disk_free_space($dizin) / 1048576), 2));
Toplam ve Kullanılan Alanı Bulma
$kisim = "F:\Program Files\EasyPHP5.3.0\www\BilgisayarI";
// toplam kisim alanını bulma
$toplamAlan = disk_total_space($kisim) / 1048576;
// Kullanilan Alani Bulma
$kullanilanAlan = $toplamAlan - disk_free_space($kisim) / 1048576;
printf("kisim: <b>%s </b>(Ayrılan: %.2f MB. Kullanilan: %.2f MB.)",
$kisim, $toplamAlan, $kullanilanAlan);
function dizin_boyut($dizin)
{
$dizinboyut=0;
// dizini aç ve içini oku
if ($dh = @opendir($dizin))
{
// her bir dizin içeriği için işleme devam et
while (($dosyaAdi = readdir ($dh)))
{
// bazı istenmeyen dizin içeriklerini filtrele
if ($dosyaAdi != "." && $dosyaAdi != "..")
{
// dosya ise boyutunu hesapla ve toplama ekle
if (is_file($dizin."/".$dosyaAdi))
$dizinboyut += filesize($dizin."/".$dosyaAdi);
// yeni dizin döngüyü tekrar çelıştır
if (is_dir($dizin."/".$dosyaAdi))
$dizinboyut += dizin_boyut($dizin."/".$dosyaAdi);
}
}
}
@closedir($dh);
return $dizinboyut;
} #end dizin_boyut()
$dizin = "C:\Program Files\EasyPHP5.3.0\www";
$toplamBoyut = round((dizin_boyut($dizin) / 1048576), 2);
printf("dizin %s: %f MB", $dizin,$toplamBoyut);
Ulaşım ve Değişim Bilgileri
En son erişilen zaman
$dosya = "F:\Program
Files\EasyPHP5.3.0\www\BilgisayarI/sifreler.txt";
printf("Dosyaya en son erişilen zaman: %s", date("m-dy g:i:sa", fileatime($dosya)));

En son (izinler, gruplar, erişim vb…)değiştirilen
zaman (içerik değil)
$dosya = "F:\Program
Files\EasyPHP5.3.0\www\BilgisayarI/sifreler.txt";
printf("Dosyada en son değişiklik yapılan zaman: %s",
date("m-d-y g:i:sa",filectime($dosya)));

Ulaşım ve Değişim Bilgileri
Dosyanın içeriğinin en son değiştiği
zaman
$dosya = "F:\Program
Files\EasyPHP5.3.0\www\BilgisayarI/si
freler.txt";
echo "Dosyanın içeriğinin en son değiştiği
zaman ".date("m-d-y g:i:sa",
filemtime($dosya));

Dosyalarla çalışmak
Dosyada yeni satır karakterlerini tanıma
// dosyayi okuma amaçlı açmak
$fh = fopen("F:\Program
Files\EasyPHP5.3.0\www\BilgisayarI/sifreler.
txt", "rt");
// dosyanin en sonuna ulaşmadan yeni satirlari
almak
while (!feof($fh)) echo "<br>".fgets($fh);
// dosyayi kapatma
fclose($fh);

Dosyalarla çalışmak
Dosyaları değişik amaçlarla açma
fopen("F:\Program
Files\EasyPHP5.3.0\www\BilgisayarI/sifreler.txt", "rt")
r Sadece oku, gösterge en başa.
r+ yaz ve oku. gösterge en başa.
w Sadece yazma, yazmadan önce içeriği temizle, göstergeyi en
başa getir, dosya yoksa önce açmayı dene.
w+ yaz ve oku, yazmadan önce içeriği temizle, göstergeyi en başa
getir, dosya yoksa önce açmayı dene.
a sadece yaz, gösterge en sonda, dosya yoksa açmayı dene,
append (ekle) olarak da bilinir.
a+ oku ve yaz, gösterge en sonda, dosya yoksa açmayı dene,
append (ekle) olarak da bilinir.
b dosyayı binary modda açar.
t dosyayı text formatında açar.

Dosyalarla çalışmak
Dosyayı kapatma
fclose($fh);

Dosyayı Bir Diziye Okuma
// dosyayi dizeye ata
$kullanicilar = file("sifreler.txt");
// dizinin içinde işlem yap
foreach ($kullanicilar as $kullanici) {
// satırları işle, Öğrenci no ve e-postalarını al
list($ogrencino, $eposta) = explode(";", $kullanici);
// $eposta'dan yeni satır karakterlerini kaldır
$eposta = trim($eposta);
// eposta adresi ve öğrenci numarasını istenilen biçimde
düzenle
echo "<a href=\"mailto:$eposta\">$ogrencino</a> <br /> ";
}

Dosyalarla çalışmak
Bütün Dosyayı Bir Stringe Atama
// diziyi bir string değişkenine ata
$kullaniciDosyasi= file_get_contents("sifreler.txt");
// kullanici dosyasinin her bir satırını diziye ata
$Kullanicilar = explode("\n",$kullaniciDosyasi);
// Dizi içinde işlemler
foreach ($Kullanicilar as $kullanici) {
// satırlardan ogrenci no ve eposta adreslerini al
list($ogrno, $eposta) = explode(";", $kullanici);
// Output the formatted name and e-mail address
echo "<a href=\"mailto:$eposta\">$ogrno</a> <br
/>";
}

Dosyalarla çalışmak
csv veri dosyalarını okuma
// veri sayfasını aç
$fh = fopen("notlar.csv", "r");
// her bir satırın ilk üç parçasını al
while (list($ogrno, $adSoyad, $eposta) = fgetcsv($fh, 1024, ";")) {
// html formatında ekrana yazdır
printf("<p>%s (%s) E-posta= \"%s\"</p>", $adSoyad,$ogrno, $eposta);
}

csv dosyalarını diziye atama
// veri sayfasını diziye aktar
$fh = file("notlar.csv");
// her bir dizi elemanını işe
foreach ($fh as $kullanici) {
// Bher bir dizi elemanindan üç bilgi al
list($ogrno, $adSoyad, $eposta) = explode(";", $kullanici);
// veriyi html formatinda yazdir
printf("<p>%s (%s); E-posta=\"%s\"</p>", $adSoyad, $ogrno, $eposta);
}
Dosyalarla çalışmak
Bir dosyanın içeriğini başka dosyaya aktarma
// Dosyayi aç ve içerisindekileri oku
$dizi = file("index.html");
//yeni dosya aç
$fh = fopen("deneme.html", "wt");
foreach ($dizi as $satir)
fwrite($fh, $satir);
// dosyayi kapat
fclose($fh);

Dosyadaki Yeni Satırları Kaldırmak
$dosya = "sifreler.txt";
// dosya'yı okumak için açar
$fh = fopen($dosya, "rt");
// bütün dosyayi aktarir
$kullaniciBilgileri = fread($fh, filesize($dosya));
// açılan dosyayi kapatir
fclose($fh);
echo $kullaniciBilgileri;
Dosyalarla çalışmak
Dosyadaki karakter sayısını bulmak
$dosya = "sifreler.txt";
// dosyanin boyu
$bytes = readfile($dosya);
echo $bytes;

Veriyi istenilen biçimde okumak
$fh = fopen("numaralar.txt", "r");
// her bir ayrımı belirle
while ($kullanici = fscanf($fh, "%d %d %d %d %d")) {
// her bir bölümü uygun değişkene ata
list ($bolum1,$bolum2,$bolum3, $bolum4, $bolum5) = $kullanici;
printf("Bölüm 1: %d Bölüm 2: %d Bölüm 3: %d Bölüm 4: %d Bölüm 5:
%d<br />", $bolum1, $bolum2, $bolum3, $bolum4, $bolum5);
}
fclose($fh);
Dosyalarla çalışmak
Yeni bilgi ekleme
// sifreler dosyasına eklemek istediğimiz bilgiler
$kullaniciBilgileri = "70228044;[email protected]";
// sifreler.txt dosyasini ac imleci en sona götür
$fh = fopen("sifreler.txt", "at");
// veriyi yaz
fwrite($fh, $kullaniciBilgileri);
// dosyayı kapat
fclose($fh);

Yeni satıra eklemesini istersek ??
İmlecin Yerini Belirlemek
int fseek(Dosya Tutucu, int sayi [, int whence])
whence değerleri
SEEK_CUR: şu andaki pozisyonundan sayi kadar
ileri
SEEK_END: sayi – olmak durumunda. En sonuna
kadar gidip o kadar karakter geri alıyor.
SEEK_SET: sayi kadar ileri alıyor. Whence
yazmasak da ayni işlemi yapıyor.
int ftell(dosya tutucu): imlecin nerede olduğunu
belirtiyor.
int rewind(dosya tutucu): imleci en başa götürüyor
Dosya İçeriklerini Okumak
resource opendir(string path)
void closedir(resource directory_handle)
string readdir(int directory_handle)
$dh = opendir('F:\Program Files\EasyPHP5.3.0\www\BilgisayarI/');
while ($dosya = readdir($dh))
echo "$dosya <br />";
closedir($dh);
$dh = opendir('F:\Program Files\EasyPHP5.3.0\www\BilgisayarI');
while ($dosya = readdir($dh))
if(($dosya != ".") AND ($dosya != "..")) echo "$dosya <br />";
closedir($dh);
Diziye atama
$dosyalar= scandir("F:\Program Files\EasyPHP5.3.0\www\BilgisayarI");
foreach ($dosyalar as $dosya)
echo "<br>".$dosya;
Dizin Silmek
function dizin_Sil($dir)
{
if ($dh = opendir($dir))
{
// dizin içerikleriyle çalışma
while (($dosya = readdir ($dh)) != false)
{
if (($dosya == ".") || ($dosya == "..")) continue;
if (is_dir($dir . '/' . $dosya))
dizin_Sil($dir . '/' . $dosya);
else
unlink($dir . '/' . $dosya);
}
closedir($dh);
rmdir($dir);
}
}
$dir = "F:\Program Files\EasyPHP5.3.0\www\BilgisayarI/deneme";
dizin_Sil($dir);
Dosya Yeniden Adlandırma
rename("deneme.html", "deneme2.html");