Jadual Kandungan
Kaedah 2
Tatabahasa
Contoh
Output
Perihalan kod
方法2
语法
示例
代码说明
结论
Rumah pembangunan bahagian belakang tutorial php Salin semua kandungan satu direktori ke direktori lain dalam PHP

Salin semua kandungan satu direktori ke direktori lain dalam PHP

Aug 29, 2023 pm 02:41 PM
Operasi fail program php salinan direktori

Salin semua kandungan satu direktori ke direktori lain dalam PHP

Apakah itu PHP?

PHP adalah singkatan kepada Hypertext Preprocessor dan merupakan bahasa skrip bahagian pelayan yang digunakan secara meluas yang digunakan terutamanya untuk pembangunan web. Ia menyediakan pemaju dengan platform yang berkuasa dan fleksibel untuk mencipta halaman web dan aplikasi yang dinamik. PHP boleh dibenamkan dalam kod HTML, membolehkan penyepaduan lancar kefungsian bahagian pelayan dengan elemen sisi klien. Sintaksnya serupa dengan C dan Perl, menjadikannya agak mudah dipelajari dan digunakan untuk pengaturcara yang biasa dengan bahasa ini. PHP membenarkan skrip sebelah pelayan dilaksanakan pada pelayan web, menjana kandungan dinamik yang boleh dihantar ke penyemak imbas pengguna. Ia menyokong pelbagai pangkalan data dan sesuai untuk membangunkan tapak web berasaskan pangkalan data. Selain itu, PHP menawarkan ekosistem perpustakaan dan rangka kerja sumber terbuka yang luas yang memudahkan pembangunan pesat dan meningkatkan kebolehgunaan semula kod. Dengan sokongan komuniti yang kukuh dan dokumentasi yang luas, PHP kekal sebagai pilihan popular di kalangan pembangun web di seluruh dunia.

PHP Salin keseluruhan kandungan satu direktori ke direktori lain

Di sini, kami menggunakan kelas scandir() dan RecursiveIteratorIterator untuk menyalin keseluruhan kandungan satu direktori ke direktori lain.

Kaedah 1

Gunakan scandir()

Kemudian scandir() menerima beberapa argumen dan, jika tiada ralat berlaku, mengembalikan senarai nama fail dalam direktori.

Tatabahasa

array scandir(string $directory, int $sorting_order = 
SCANDIR_SORT_ASCENDING, resource|null $context = null)
Salin selepas log masuk
  • $direktori (rentetan): Laluan ke direktori untuk mengimbas.

  • $urutan_isih (int, pilihan): Menentukan susunan isihan hasil. Ia boleh mengambil salah satu daripada nilai berikut:

  • SCANDIR_SORT_ASCENDING (lalai): Isih hasil dalam tertib menaik.

  • SCANDIR_SORT_DESCENDING: Isih hasil dalam tertib menurun.

  • SCANDIR_SORT_NONE: Tiada pengisihan dilakukan.

  • $konteks (sumber|null, pilihan): Menentukan sumber konteks yang dibuat menggunakan stream_context_create(). Ia digunakan untuk mengubah suai tingkah laku fungsi scandir(). Jika tidak disediakan, null digunakan.

  • Nilai pulangan: Fungsi scandir() mengembalikan tatasusunan nama fail dan direktori dalam direktori yang ditentukan. Ia termasuk fail dan direktori biasa. Tatasusunan yang terhasil mengandungi entri khas. dan .. mewakili direktori semasa dan direktori induk masing-masing.

Contoh

Berikut ialah contoh cara menggunakan scandir() untuk menyalin keseluruhan kandungan satu direktori ke direktori lain dalam PHP.

<?php
function copyDirectory($source, $destination) {
   if (!is_dir($destination)) {
      mkdir($destination, 0755, true);
   }
   $files = scandir($source);
   foreach ($files as $file) {
      if ($file !== '.' && $file !== '..') {
         $sourceFile = $source . '/' . $file;
         $destinationFile = $destination . '/' . $file;
         if (is_dir($sourceFile)) {
            copyDirectory($sourceFile, $destinationFile);
         } else {
            copy($sourceFile, $destinationFile);
         }
      }
   }
}
$sourceDirectory = '/source/directory';
$destinationDirectory = '/destination/directory';
copyDirectory($sourceDirectory, $destinationDirectory);
?>
Salin selepas log masuk

Output

There will be no output if the process is successful.
Salin selepas log masuk
Salin selepas log masuk

Perihalan kod

Kod ini mentakrifkan fungsi yang dipanggil copyDirectory, yang bertanggungjawab untuk menyalin secara rekursif kandungan direktori sumber ke direktori sasaran. Fungsi pertama menyemak sama ada direktori sasaran tidak wujud dan menciptanya menggunakan mkdir() jika perlu. Ia kemudian menggunakan scandir() untuk mendapatkan semula senarai fail dan direktori dalam direktori sumber. Ia berulang melalui setiap item, tidak termasuk entri .. dan .. dan membina laluan fail sumber dan destinasi. Jika item itu ialah direktori, fungsi itu memanggil dirinya secara rekursif dengan laluan baharu. Jika ia adalah fail, gunakan fungsi copy() untuk menyalin fail daripada sumber ke destinasi. Proses ini berterusan sehingga semua kandungan direktori sumber telah disalin ke direktori sasaran, termasuk subdirektori dan fail masing-masing. Akhirnya, fungsi dipanggil dengan direktori sumber dan destinasi yang disediakan sebagai hujah untuk melaksanakan operasi penyalinan.

Kaedah 2

Gunakan kelas RecursiveIteratorIterator dengan RecursiveDirectoryIterator

Di sini kita akan menggunakan dua kelas untuk menyelesaikan tugasan.

Tatabahasa

bool mkdir(string $pathname, int $mode = 0777, bool $recursive = 
false, resource|null $context = null)
Salin selepas log masuk
Salin selepas log masuk
  • $nama laluan (rentetan): Laluan ke direktori untuk dibuat.

  • $mod (int, pilihan): Kebenaran untuk ditetapkan untuk direktori yang baru dibuat. Ia dinyatakan sebagai nilai perlapanan.

  • $rekursif (boolean, pilihan): Jika ditetapkan kepada benar, dayakan penciptaan rekursif direktori induk.

  • $konteks (sumber|null, pilihan): Menentukan sumber konteks yang dibuat menggunakan stream_context_create().

  • Nilai pulangan: Fungsi mkdir() mengembalikan benar apabila berjaya dan palsu apabila gagal.

Contoh

Berikut adalah contoh menggunakan kaedah di atas.

function copyDirectory($source, $destination) {
   if (!is_dir($destination)) {
      mkdir($destination, 0755, true);
   }
   $iterator = new RecursiveIteratorIterator(
      new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
      RecursiveIteratorIterator::SELF_FIRST
   );
   foreach ($iterator as $item) {
      if ($item->isDir()) {
         $dir = $destination . '/' . $iterator->getSubPathName();
         if (!is_dir($dir)) {
            mkdir($dir, 0755, true);
         }
      } else {
         $file = $destination . '/' . $iterator->getSubPathName();
         copy($item, $file);
      }
   }
}
$sourceDirectory = '/source/directory';
$destinationDirectory = '/destination/directory';
copyDirectory($sourceDirectory, $destinationDirectory);
Salin selepas log masuk
Salin selepas log masuk

Output

There will be no output if the process is successful.
Salin selepas log masuk
Salin selepas log masuk

Penerangan kod:

Kod ini mentakrifkan fungsi yang dipanggil copyDirectory, yang bertanggungjawab untuk menyalin secara rekursif kandungan direktori sumber ke direktori sasaran. Fungsi pertama menyemak sama ada direktori sasaran tidak wujud dan menciptanya menggunakan mkdir() jika perlu. Ia kemudian menggunakan scandir() untuk mendapatkan semula senarai fail dan direktori dalam direktori sumber. Ia berulang melalui setiap item, tidak termasuk entri .. dan .. dan membina laluan fail sumber dan destinasi. Jika item itu ialah direktori, fungsi itu memanggil dirinya secara rekursif dengan laluan baharu. Jika ia adalah fail, gunakan fungsi copy() untuk menyalin fail daripada sumber ke destinasi. Proses ini berterusan sehingga semua kandungan direktori sumber telah disalin ke direktori sasaran, termasuk subdirektori dan fail masing-masing. Akhirnya, fungsi dipanggil dengan direktori sumber dan destinasi yang disediakan sebagai hujah untuk melaksanakan operasi penyalinan.

方法2

将 RecursiveIteratorIterator 类与 RecursiveDirectoryIterator 一起使用

这里我们将使用两个类来完成任务。

语法

bool mkdir(string $pathname, int $mode = 0777, bool $recursive = 
false, resource|null $context = null)
Salin selepas log masuk
Salin selepas log masuk
  • $pathname(字符串):要创建的目录的路径。

  • $mode(int,可选):为新创建的目录设置的权限。它被指定为八进制值。

  • $recursive(布尔型,可选):如果设置为 true,则启用父目录的递归创建。

  • $context(resource|null,可选):指定使用stream_context_create()创建的上下文资源。

  • 返回值:mkdir() 函数在成功时返回 true,在失败时返回 false。

示例

这里是使用上述方法的一个例子。

function copyDirectory($source, $destination) {
   if (!is_dir($destination)) {
      mkdir($destination, 0755, true);
   }
   $iterator = new RecursiveIteratorIterator(
      new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
      RecursiveIteratorIterator::SELF_FIRST
   );
   foreach ($iterator as $item) {
      if ($item->isDir()) {
         $dir = $destination . '/' . $iterator->getSubPathName();
         if (!is_dir($dir)) {
            mkdir($dir, 0755, true);
         }
      } else {
         $file = $destination . '/' . $iterator->getSubPathName();
         copy($item, $file);
      }
   }
}
$sourceDirectory = '/source/directory';
$destinationDirectory = '/destination/directory';
copyDirectory($sourceDirectory, $destinationDirectory);
Salin selepas log masuk
Salin selepas log masuk

代码说明

在此方法中,RecursiveDirectoryIterator 用于迭代目录结构,包括所有子目录和文件。 RecursiveIteratorIterator 有助于递归地遍历迭代器。它会跳过 .和 .. 使用 SKIP_DOTS 标志的条目。在循环内,它检查当前项是否是目录。如果是这样,它会使用 mkdir() 在目标路径中创建相应的目录(如果该目录尚不存在)。如果该项目是文件,它将构造目标文件路径并使用 copy() 复制文件。此方法消除了对单独递归函数的需要,并通过利用内置 PHP 迭代器类的功能简化了代码。

结论

综上所述,两种方法都可以达到预期的结果,但第二种使用迭代器的方法提供了更优雅、更高效的解决方案,特别是对于涉及大型目录结构的场景。不过,这两种方法的选择最终取决于开发者的具体要求和偏好。

Atas ialah kandungan terperinci Salin semua kandungan satu direktori ke direktori lain dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang? Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang? Jun 06, 2024 pm 05:14 PM

Membaca dan menulis fail dengan selamat dalam Go adalah penting. Garis panduan termasuk: Menyemak kebenaran fail Menutup fail menggunakan tangguh Mengesahkan laluan fail Menggunakan tamat masa konteks Mengikuti garis panduan ini memastikan keselamatan data anda dan keteguhan aplikasi anda.

Bolehkah saya memadam fail gho? Bolehkah saya memadam fail gho? Feb 19, 2024 am 11:30 AM

Fail gho ialah fail imej yang dicipta oleh perisian NortonGhost dan digunakan untuk membuat sandaran dan memulihkan sistem pengendalian dan data. Dalam sesetengah kes, anda boleh memadam fail gho, tetapi lakukan dengan berhati-hati. Artikel ini akan memperkenalkan peranan fail gho, langkah berjaga-jaga untuk memadam fail gho dan cara memadam fail gho. Mula-mula, mari kita fahami peranan fail gho. Fail gho ialah sistem termampat dan fail sandaran data yang boleh menyimpan imej keseluruhan cakera keras atau partition tertentu. Fail sandaran jenis ini biasanya digunakan untuk pemulihan kecemasan

Cara membetulkan: Ralat operasi fail Java: Penulisan fail gagal Cara membetulkan: Ralat operasi fail Java: Penulisan fail gagal Aug 26, 2023 pm 09:13 PM

Cara menyelesaikan: Ralat operasi fail Java: Penulisan fail gagal Dalam pengaturcaraan Java, anda sering menghadapi keperluan untuk operasi fail, dan penulisan fail adalah salah satu fungsi penting. Walau bagaimanapun, kadangkala kami menghadapi ralat kegagalan penulisan fail, yang mungkin menghalang program daripada berjalan dengan betul. Artikel ini akan menerangkan beberapa punca dan penyelesaian biasa untuk membantu anda menyelesaikan masalah jenis ini. Laluan yang salah: Masalah biasa ialah laluan fail yang salah. Apabila kami cuba menulis fail ke laluan yang ditentukan, jika laluan itu tidak wujud atau kebenaran tidak mencukupi, fail tersebut akan ditulis.

Petua Pengaturcaraan Go: Memadamkan Kandungan daripada Fail Petua Pengaturcaraan Go: Memadamkan Kandungan daripada Fail Apr 04, 2024 am 10:06 AM

Bahasa Go menyediakan dua kaedah untuk mengosongkan kandungan fail: menggunakan io.Seek dan io.Truncate, atau menggunakan ioutil.WriteFile. Kaedah 1 melibatkan mengalihkan kursor ke penghujung fail dan kemudian memotong fail, kaedah 2 melibatkan menulis tatasusunan bait kosong pada fail. Kes praktikal menunjukkan cara menggunakan kedua-dua kaedah ini untuk mengosongkan kandungan dalam fail Markdown.

Ketahui fungsi pengendalian fail dalam bahasa Go dan laksanakan fungsi penyulitan, pemampatan, muat naik dan muat turun fail Ketahui fungsi pengendalian fail dalam bahasa Go dan laksanakan fungsi penyulitan, pemampatan, muat naik dan muat turun fail Jul 29, 2023 pm 10:37 PM

Ketahui fungsi operasi fail dalam bahasa Go dan laksanakan fungsi penyulitan, pemampatan, muat naik dan muat turun fail Bahasa Go ialah bahasa pengaturcaraan taip statik sumber terbuka Ia popular secara meluas dalam bidang pembangunan untuk prestasi yang cekap dan sintaksnya yang ringkas. Pustaka standard bahasa Go menyediakan banyak fungsi operasi fail, menjadikannya sangat mudah untuk membaca dan menulis fail, menyulitkan dan memampatkannya, memuat naik dan memuat turunnya. Artikel ini akan memperkenalkan cara menggunakan fungsi operasi fail dalam bahasa Go untuk melaksanakan fungsi menyulitkan, memampatkan, memuat naik dan memuat turun fail. Pertama, kita perlu mengimport tiga yang berkaitan

Contoh operasi fail PHP: membaca fail CSV Contoh operasi fail PHP: membaca fail CSV Jun 20, 2023 am 11:42 AM

PHP ialah bahasa pengaturcaraan yang popular digunakan secara meluas dalam pembangunan web. Dalam aplikasi web, operasi fail adalah fungsi asas dan biasa. Artikel ini akan menerangkan cara menggunakan PHP untuk membaca fail CSV dan memaparkannya dalam jadual HTML. CSV ialah format fail biasa yang digunakan untuk mengimport data jadual ke dalam perisian hamparan seperti Excel. Fail CSV biasanya terdiri daripada banyak baris, setiap baris terdiri daripada nilai dipisahkan koma. Baris pertama biasanya mengandungi pengepala lajur, yang menerangkan maksud setiap nilai lajur. Di sini kita akan menggunakan PHP

Bagaimana untuk memasukkan kandungan di lokasi tertentu dalam fail menggunakan C++? Bagaimana untuk memasukkan kandungan di lokasi tertentu dalam fail menggunakan C++? Jun 04, 2024 pm 03:34 PM

Dalam C++, gunakan kelas ofstream untuk memasukkan kandungan di lokasi yang ditentukan dalam fail: buka fail dan cari titik sisipan. guna

Bagaimana untuk mempelajari kemahiran manipulasi fail dalam PHP8 dengan menulis kod Bagaimana untuk mempelajari kemahiran manipulasi fail dalam PHP8 dengan menulis kod Sep 12, 2023 pm 04:25 PM

Cara mempelajari kemahiran pengendalian fail dalam PHP8 dengan menulis kod PHP ialah bahasa skrip yang digunakan secara meluas dalam pembangunan web Ia boleh beroperasi dengan mudah pada fail, seperti membaca dan menulis fail, mencipta direktori, dsb. Ia adalah sangat penting bagi pembangun untuk menguasai kemahiran operasi fail PHP. Artikel ini akan memperkenalkan cara mempelajari kemahiran pengendalian fail dalam PHP8 dengan menulis kod. Langkah 1: Sediakan persekitaran pembangunan PHP Sebelum mempelajari kemahiran pengendalian fail PHP, kita perlu menyediakan persekitaran pembangunan PHP terlebih dahulu.

See all articles