180 likes | 428 Views
PHP-Dosya ve Dizinler. Internet Tabanlı Programlama Dr. E rman 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"));
E N D
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-d-y 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/sifreler.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. asadece 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. bdosyayı 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;ercan@gmail.com"; // 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 ?? • Yeni bilgi ekleme // sifreler dosyasına eklemek istediğimiz bilgiler $kullaniciBilgileri = "70228044;ercan@gmail.com"; // 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");