Klasör Oluşturma ve Klasör İçi Görüntüleme

<?php
class Dizin {
	var $dizinAdi='';
	var $kol_ac='';
	var $oku='';
	var $mesaj='';
	function isimAyarla($dizinAdi){
		$this->mesaj="";
		$this->dizinAdi=$dizinAdi;
	}
	function dizinIsmiGetir($path){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			return dirname($this->dizinAdi);
		}
	}
	function dizinOlustur($dizinAdi){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			if (!isset($this->kol_ac)){
				$this->mesaj= "Dizini açmanız gerekir (dizinBaglantisiAc kullanın).";
			}else{
				if (is_dir($dizinAdi)==false){
					$this->mesaj=$dizinAdi." dizini oluşturuldu";
					return mkdir($dizinAdi);
				}else{
					$this->mesaj=$dizinAdi." dizini zaten mevcut";
				}
			}
		}
	}
	function dizinSil($dizinAdi){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			if (!isset($this->kol_ac)){
				$this->mesaj= "Dizini açmanız gerekir (dizinBaglantisiAc kullanin).";
			}else{
				if (!is_dir($dizinAdi)){
					$this->mesaj= "$dizinAdi bir dizin degil!";
				}else{
					return rmdir($dizinAdi);
				}
			}
		}
	}
	function calismaDizini(){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj="Dizin adını belirlemelisiniz.";
		}else{
			if (!isset($this->kol_ac)){
				$this->mesaj= "Dizini açmanız gerekir (dizinBaglantisiAc kullanin).";
			}else{
				return getcwd();
			}
		}
	}
	function dizinBaglantisiAc(){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj="Dizin adını belirlemelisiniz.";
		}else{
			if (!is_dir($this->dizinAdi)){
				$this->mesaj="$this->dizinAdi bir dizin degil!";
			}else{
				$this->kol_ac = opendir($this->dizinAdi);
			}
		}
	}
	function dizinAc($dizinAdi){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			if (!is_dir($this->dizinAdi)){
				$this->mesaj="$this->dizinAdi bir dizin degil!";
			}else{
				chdir($dizinAdi);
			}
		}
	}
	function baglantisizAgaciGoruntule(){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			if (!isset($this->kol_ac)){
				$this->mesaj= "Dizini açmanız gerekir (dizinBaglantisiAc kullanin).";
			}else{
				while($this->oku = readdir($this->kol_ac)) {
					if(!file_exists($this->oku)){
						echo $this->oku . "<br>\n";
					}
				}
			}
		}
	}
	function Yenile(){
		$this->mesaj="";
		if (!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			if(!isset($this->kol_ac)){
				$this->mesaj= "Dizini açmanız gerekir (dizinBaglantisiAc kullanin).";
			}else{
				rewinddir($this->kol_ac);
			}
		}
	}
	function Kapat(){
		$this->mesaj="";
		if(!isset($this->dizinAdi)){
			$this->mesaj= "Dizin adını belirlemelisiniz.";
		}else{
			if(!isset($this->kol_ac)){
				$this->mesaj="Dizini açmanız gerekir (dizinBaglantisiAc kullanin).";
			}else{
				closedir($this->kol_ac);
			}
		}
	}
}
$d = new Dizin();
$d->dizinOlustur("test");
echo $d->mesaj."<br>";
echo "Bulunduğunuz Klasör : ". $d->calismaDizini() ."<br>";
$d->isimAyarla("Admin");
$d->dizinBaglantisiAc();
echo "Admin Dizini İçindekiler:<br> ";
$d->baglantisizAgaciGoruntule();
$d->Yenile();
?>

Çıktısı

test dizini zaten mevcut
Bulunduğunuz Klasör : C:\localweb
Admin Dizini İçindekiler:
admin.php
config

 

Bir Klasörün İçindeki Tüm Dosya ve Klasörleri Görüntülemek

<?php
class DerinDizin{
  var $dizin;
  var $dosyalar;
  function DerinDizin(){
    $this->dizin = '';
    $this->dosyalar = array();
    $this->dizinelemanlar = new elemanlar();
  }
  function dizinAyarla( $dizin ){
    $this->dizin = $dizin;
    $this->dosyalar = array();
    $this->dizinelemanlar->sifir();
    $this->dizinelemanlar->push( $this->dizin );
  }
  function yukle(){
    while( $this->mevcutDizin = $this->dizinelemanlar->pop() ){
      $this->mevcutDizindenYukle();
    }
  }
  function mevcutDizindenYukle(){
    if ( $kol = @opendir( $this->mevcutDizin ) ){
      while ( false !== ( $dosya = readdir( $kol ) ) ){
        if ( $dosya == "." || $dosya == ".." ) continue;
        $dosyaYolu = $this->mevcutDizin . '/' . $dosya;
        $dosyatipi = filetype( $dosyaYolu );
        if ( $dosyatipi == 'dir' ){
          $this->dizinelemanlar->push($dosyaYolu);
          continue;
        }
        $this->dosyalar[]=$dosyaYolu;
      }
      closedir($kol);
    }
    else{
      echo 'Hata : Dizin Açılamıyor "'.$this->mevcutDizin.'"';
    }
  }
}
class elemanlar{
  var $elemanlar;
  function elemanlar(){
    $this->sifir();
  }
  function push( $eleman ){
    array_push( $this->elemanlar, $eleman );
  }
  function pop(){
    return array_pop( $this->elemanlar );
  }
  function sifir(){
    $this->elemanlar = array();
  }
}
$dizinAdi = '..';
$dizin = new DerinDizin();
$dizin->dizinAyarla($dizinAdi);
$dizin->yukle();
foreach( $dizin->dosyalar as $n => $kolYolu ){
	echo ($n+1)." ".$kolYolu."<br>";
}
?>

Çıktısı

1 ../localweb/index.php
2 ../localweb/test/2.txt
3 ../localweb/test/a/b.php
4 ../databases/tr.txt
5 ../conf/asd.txt
6 ../conf/test.conf
7 ../conf/test2.conf

 

Klasör Oluşturarak Dosya Yazma Sınıfı

<?php
class dosyaYazici{
	var $yenimaske= 0;
	var $klasorizin= 0777;
	var $dosyaizin= 0777;
	var $kullanici= "nobody";
	public $hata=null;
	function yeniKlasor($yol,$klasorname){
		if(!file_exists(getcwd().$yol.$klasorname)){
			$oldumask = @umask($this->yenimaske); 
			$b 		  = @mkdir(getcwd().$yol.$klasorname, $this->klasorizin);
						@umask($oldumask);
			if($b==TRUE){
				return TRUE;
			} else {
				$this->hata.="Klasör Oluşturulamadı";
				return FALSE;
			}
		} else return TRUE;
	}
	function yaz($dosya,$icerik){
		if(!empty($dosya) && !empty($icerik)){
			$fp = fopen($dosya,"w");
			$b = fwrite($fp,$icerik);
			fclose($fp);
			@chmod($dosya,$this->dosyaizin);
			@chown($dosya,$this->kullanici);
			if($b != -1){
				return TRUE;
			} else {
				$this->hata.="Dosya Yazılamadı";
				return FALSE;
			}
		} else {
			$this->hata.="Dosya veya İçerik Bulunamadı";
			return FALSE;
		}
	}
	function oku($dosya){
		if(!empty($dosya)){
			$dt = fopen($dosya, "rb");
			$icerik = fread($dt, filesize($dosya));
			fclose($dt);
			echo $icerik;
		} else {
			$this->hata.="Dosya Bulunamadı";
			return FALSE;
		}
	}
}
$fw = new dosyaYazici;
$fw->yeniKlasor("/","klasor");
$fw->yaz(getcwd()."/klasor/file.txt","bubirdenemedir");
$fw->oku(getcwd()."/klasor/file.txt");
echo $fw->hata;
?>

Çıktısı

bubirdenemedir

 

Dosya ve Klasörleri Listeleme

<?php
class dizin{
    function tara($dizin){
    $veriler = array();
    $yol = $dizin."/";
			if ($topla = @opendir($dizin)) {
				while (false !== ($dosya = readdir($topla))) { 
					if (true == is_dir($yol.$dosya)&&$dosya !== "." && $dosya !== ".."){
						$veriler = array_merge($veriler, $this->tara($yol.$dosya));
					}
					elseif (false == is_dir($yol.$dosya)){
						$veriler[] = $yol.$dosya;   
					}
				}
			}else{
				echo "Dizin okunamıyor - ".$dizin;
			}
			closedir($topla);  
    return $veriler;   
    }
}
$obj = new dizin;
echo "<pre>";
//$obj->tara("."); geçerli dizin için
//$obj->tara("ç.") ana dizin için
print_r($obj->tara("."));
echo "<pre>";
?>

Çıktısı

Array
(
 [0] => ./index.php
 [1] => ./test.php
)

 

Zip Arşiv Sınıfı Kullanımı

Bu sınıfı kullanarak klasörleri dosya ve alt klasörleri ile birlikte sıkıştırabilirsiniz.

<?php
class Zipleyici extends ZipArchive { 
 public $zipadi=NULL;
 public function klasorEkle($dizin) { 
 $this->open($this->zipadi,ZipArchive::CREATE);
 echo $dizin . ' Ekleniyor <br>'; 
 $this->addEmptyDir($dizin); 
 $dosyalar = glob($dizin . '/*'); 
 foreach ($dosyalar as $dosya) { 
 echo $dosya . '<br>'; 
 if (is_dir($dosya)) { 
 $this->klasorEkle($dosya); 
 }elseif (is_file($dosya)){ 
 $this->addFile($dosya); 
 } 
 } 
 } 
}

$zip=new Zipleyici;
$zip->zipadi="arac.zip";
$zip->klasorEkle("arac");//klasör adı
$zip->close();
?>

Not: Extend ile dahil edilen ZipArchive sınıfı; PHP 5.2.0 ve sonrası veya PECL zip 1.1.0 ve sonrasında çalışmaktadır.