Membuat, Membaca Dan Menghapus Folder Oleh PHP

Membuat Direktori Baru
Membuat direktori baru di PHP dilakukan dengan menggunakan fungsi mkdir (), yang mengambil dua parameter.Parameter-parameter ini, untuk nama direktori yang Anda ingin buat dan dalam status mode yang diizinkan untuk direktori baru, yang harus bilangan oktal. Parameter mode adalah opsional dan memiliki efek hanya pada sistem Unix. Silahkan lihat pada contoh:

<?php
// if /path/to/my exists, this should return true
// if PHP has the right permissions

mkdir("/path/to/directory", 0777);
?>
Secara default, fungsi mkdir () hanya menciptakan sebuah direktori jika induknya ada. Dalam PHP 5 parameter rekursif ditambahkan yang harus benar atau salah, tergantung pada apakah Anda ingin membuat induk direktori atau tidak. Dalam contoh berikut, kami melewati benar sebagai parameter ketiga untuk mkdir (), jadi ini membuat fungsi tindakan berulang-ulang untuk membuat direktori di atasnya hilang.
Membaca Isi direktori yang
Mari kita mulai dengan sederhana daftar isi direktori. Kita perlu tiga fungsi untuk melakukan tugas ini: opendir (), readdir () dan closedir (). The opendir () fungsi mengambil satu parameter, yang merupakan direktori yang ingin kita baca, dan mengembalikan pegangan direktori yang akan digunakan dalam readdir berikutnya () dan closedir () panggilan. opendir () mengembalikan Salah jika direktori tidak bisa dibuka.
Fungsi readdir () mengambil satu parameter, yaitu menangani opendir () kembali dan setiap kali kita sebut readdir () mengembalikan nama file dari file selanjutnya dalam direktori. readdir () mengembalikan Salah jika akhir direktori telah tercapai. Perhatikan bahwa readdir () mengembalikan hanya nama-nama item, daripada jalur penuh.
Contoh di bawah membuat kotak pilih yang berisi daftar semua file dalam direktori. Copy dan paste kode ini dan menyimpannya sebagai index.php di direktori yang Anda ingin lakukan untuk menampilkan semua file.Secara otomatis mengecualikan diri dari daftar, dan mudah untuk memodifikasi dalam membuatnya dengan mengabaikan file lain juga:

<?php
// open the current directory
$dhandle = opendir('.');
// define an array to hold the files
$files = array();

if ($dhandle) {
   // loop through all of the files
   while (false !== ($fname = readdir($dhandle))) {
      // if the file is not this file, and does not start with a '.' or '..',
      // then store it for later display

      if (($fname != '.') && ($fname != '..') &&
          ($fname != basename($_SERVER['PHP_SELF']))) {
          // store the filename
          $files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
      }
   }
   // close the directory
   closedir($dhandle);
}

echo "<select name=\"file\">\n";
// Now loop through the files, echoing out a new select option for each one
foreach( $files as $fname )
{
   echo "<option>{$fname}</option>\n";
}
echo "</select>\n";
?>
Pertama, kita buka direktori untuk membaca dengan fungsi opendir () dan menggunakan pernyataan sementara untuk loop melalui setiap entri tersebut. Kami menyebutnya readdir () sebagai bagian dari ekspresi uji laporan sementara, menugaskan hasilnya ke variabel $ fname. Kami secara eksplisit menguji apakah nilai kembali sama dengan dan dari jenis yang sama dengan False karena jika tidak, entri direktori yang namanya mengevaluasi ke False akan menghentikan loop sebelum waktunya. Dalam tubuh laporan sementara, kami memeriksa apakah file tidak file ini, dan tidak mulai dengan (direktori saat ini). Atau .. (direktori induk) dan kemudian menyimpan nama file ke dalam file $ array. Kami juga melakukan satu pemeriksaan yang lebih. Jika path file penuh mengarah ke direktori maka kita tambahkan ke nama file "(Dir)".
Ada cara lain untuk iterate atas semua file dalam direktori. PHP 5 memiliki satu set objek yang disebut iterator.Iterators membantu menghilangkan masalah dalam kode Anda. Misalnya, PHP 5 memberikan DirectoryIterator a:

<?php
echo "<select name=\"file\">\n";
foreach (new DirectoryIterator('.') as $file) {
   // if the file is not this file, and does not start with a '.' or '..',
   // then store it for later display

   if ( (!$file->isDot()) && ($file->getFilename() != basename($_SERVER['PHP_SELF'])) ) {
      echo "<option>";
      // if the element is a directory add to the file name "(Dir)"
      echo ($file->isDir()) ? "(Dir) ".$file->getFilename() : $file->getFilename();
      echo "</option>\n";
   }
}
echo "</select>\n";
?>
Contoh ini menghasilkan hasil yang sama seperti sebelumnya kode yang menggunakan fungsi direktori, tetapi kode ini lebih pendek dan lebih aman karena Anda tidak bisa melupakan! == = Perbandingan.
Menghapus direktori dan Isinya
PHP memiliki fungsi rmdir () yang mengambil nama direktori sebagai parameter dan hanya akan menghapus direktori yang ditentukan dari sistem file, dalam proses ini Anda harus memiliki hak untuk melakukannya.Namun, fungsi rmdir () bekerja hanya pada direktori kosong. Contoh di bawah ini menghapus direktori kosong bernama "sementara":

<?php
 rmdir( "temporary" );
?>
Jika Anda ingin menghapus direktori yang tidak kosong, Anda harus menggunakan rekursi. Pada contoh berikut kita akan membuat fungsi rekursif bernama deleteDir () yang mengambil nama direktori sebagai parameter dan akan melalui setiap subdirektori, menghapus file di dalam direktorinya dulu. Ketika direktori kosong, kita menggunakan rmdir () untuk menghapus foler yang telah kosong.

<?php
function deleteDir($dir) {
   // open the directory
   $dhandle = opendir($dir);

   if ($dhandle) {
      // loop through it
      while (false !== ($fname = readdir($dhandle))) {
         // if the element is a directory, and
         // does not start with a '.' or '..'
         // we call deleteDir function recursively
         // passing this element as a parameter

         if (is_dir( "{$dir}/{$fname}" )) {
            if (($fname != '.') && ($fname != '..')) {
               echo "<u>Deleting Files in the Directory</u>: {$dir}/{$fname} <br />";
               deleteDir("$dir/$fname");
            }
         // the element is a file, so we delete it
         } else {
            echo "Deleting File: {$dir}/{$fname} <br />";
            unlink("{$dir}/{$fname}");
         }
      }
      closedir($dhandle);
    }
   // now directory is empty, so we can use
   // the rmdir() function to delete it

   echo "<u>Deleting Directory</u>: {$dir} <br />";
   rmdir($dir);
}

// call deleteDir function and pass to it
// as a parameter a directory name
deleteDir("temporary");
?>
Cara lain untuk menghapus direktori yang tidak kosong adalah dengan menggunakan RecursiveDirectoryIterator dan RecursiveIteratorIterator. RecursiveIteratorIterator harus diberitahu untuk memberikan file-file direktori (file dan subdirektori) sebelum direktori dengan CHILD_FIRST konstan. Silahkan lihat pada kode:
<?php
function deleteDir($dir) {
   $iterator = new RecursiveDirectoryIterator($dir);
   foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $file)
   {
      if ($file->isDir()) {
         rmdir($file->getPathname());
      } else {
         unlink($file->getPathname());
      }
   }
   rmdir($dir);
}

deleteDir("temporary");
?>
Catatan: The CHILD_FIRST konstan ditambahkan dengan PHP 5.1
Smoga bermanfaat..

Previous
Next Post »