Bekerja dengan Direktori di PHP

Bekerja dengan Direktori di PHP

Bekerja dengan Direktori di PHP

Di PHP juga memungkinkan Anda untuk bekerja dengan direktori di php, misalnya, Anda dapat membuka direktori dan membaca isinya, membuat atau menghapus direktori, membuat daftar semua file dalam direktori, dan sebagainya.

Membuat Direktori Baru

Anda dapat membuat direktori baru dan kosong dengan memanggilĀ mkdir()fungsiĀ PHPĀ dengan jalur dan nama direktori yang akan dibuat, seperti yang ditunjukkan pada contoh di bawah ini:

Contoh

Jalankan kode iniĀ Ā»

<?php
// The directory path
$dir = "testdir";
 
// Check the existence of directory
if(!file_exists($dir)){
    // Attempt to create directory
    if(mkdir($dir)){
        echo "Directory created successfully.";
    } else{
        echo "ERROR: Directory could not be created.";
    }
} else{
    echo "ERROR: Directory already exists.";
}
?>

Untuk membuatĀ mkdir()fungsi berfungsi, direktori induk dalam parameter jalur direktori harus sudah ada, misalnya, jika Anda menetapkan jalur direktoriĀ testdir/subdirdaripadaĀ testdirharus ada, jika tidak PHP akan menghasilkan kesalahan.


Menyalin File dari Satu Lokasi ke Lokasi Lain

Anda dapat menyalin file dari satu lokasi ke lokasi lain dengan memanggilĀ copy()fungsiĀ PHPĀ dengan sumber file dan jalur tujuan sebagai argumen.Ā Jika file tujuan sudah ada, itu akan ditimpa.Ā Berikut adalah contoh yang membuat salinan file “example.txt” di dalam folder backup.

Contoh

Jalankan kode iniĀ Ā»

<?php
// Source file path
$file = "example.txt";
 
// Destination file path
$newfile = "backup/example.txt";
 
// Check the existence of file
if(file_exists($file)){
    // Attempt to copy file
    if(copy($file, $newfile)){
        echo "File copied successfully.";
    } else{
        echo "ERROR: File could not be copied.";
    }
} else{
    echo "ERROR: File does not exist.";
}
?>

Untuk membuat contoh ini berfungsi, direktori target yang merupakanĀ cadanganĀ dan file sumber yaitu “example.txt” harus sudah ada;Ā jika tidak PHP akan menghasilkan kesalahan.


Mendaftar Semua File di Direktori

Anda dapat menggunakanĀ scandir()fungsiĀ PHPĀ untuk membuat daftar file dan direktori di dalam jalur yang ditentukan.

Sekarang kita akan membuat fungsi khusus yang secara rekursif akan mencantumkan semua file dalam direktori menggunakan PHP.Ā Skrip ini akan berguna jika Anda bekerja dengan struktur direktori yang sangat bersarang.

Contoh

Jalankan kode iniĀ Ā»

<?php
// Define a function to output files in a directory
function outputFiles($path){
    // Check directory exists or not
    if(file_exists($path) && is_dir($path)){
        // Scan the files in this directory
        $result = scandir($path);
        
        // Filter out the current (.) and parent (..) directories
        $files = array_diff($result, array('.', '..'));
        
        if(count($files) > 0){
            // Loop through retuned array
            foreach($files as $file){
                if(is_file("$path/$file")){
                    // Display filename
                    echo $file . "<br>";
                } else if(is_dir("$path/$file")){
                    // Recursively call the function if directories found
                    outputFiles("$path/$file");
                }
            }
        } else{
            echo "ERROR: No files found in the directory.";
        }
    } else {
        echo "ERROR: The directory does not exist.";
    }
}
 
// Call the function
outputFiles("mydir");
?>

Daftar Semua File dari Jenis Tertentu

Saat mengerjakan direktori dan struktur file, terkadang Anda mungkin perlu menemukan jenis file tertentu di dalam direktori, misalnya, hanya mencantumkanĀ .textatauĀ .pngfile, dll. Anda dapat melakukannya dengan mudah menggunakanĀ glob()fungsiĀ PHPĀ , yang mencocokkan file berdasarkan pola .

Kode PHP pada contoh berikut akan mencariĀ direktoriĀ dokumenĀ dan mendaftar semua file denganĀ .textekstensi.Ā Itu tidak akan mencari subdirektori.

Contoh

Jalankan kode iniĀ Ā»

<?php
/* Search the directory and loop through
returned array containing the matched files */
foreach(glob("documents/*.txt") as $file){
    echo basename($file) . " (size: " . filesize($file) . " bytes)" . "<br>";
}
?>

TheĀ glob()Fungsi juga dapat digunakan untuk menemukan semua file dalam direktori atau subdirektori.Ā Fungsi yang ditentukan dalam contoh berikut akan secara rekursif mencantumkan semua file dalam direktori, seperti yang telah kita lakukan pada contoh sebelumnya denganĀ scandir()fungsi tersebut.

Contoh

Jalankan kode iniĀ Ā»

<?php
// Define a function to output files in a directory
function outputFiles($path){
    // Check directory exists or not
    if(file_exists($path) && is_dir($path)){
        // Search the files in this directory
        $files = glob($path ."/*");
        if(count($files) > 0){
            // Loop through retuned array
            foreach($files as $file){
                if(is_file("$file")){
                    // Display only filename
                    echo basename($file) . "<br>";
                } else if(is_dir("$file")){
                    // Recursively call the function if directories found
                    outputFiles("$file");
                }
            }
        } else{
            echo "ERROR: No such file found in the directory.";
        }
    } else {
        echo "ERROR: The directory does not exist.";
    }
}
 
// Call the function
outputFiles("mydir");
?>

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Need Help? Chat with us