目录操作_PHP

Jun 01, 2016 pm 12:30 PM
function if public 操作する 目次

即兴写的代码,大家可以完善一下

/**
*  DirTree.php 递归列出目录
*
* @Copyright
* @Author                skyCrack
* @Created               
* @Version                $Id$
*/

define('_DEBUG', 1);

class DirTree
{
        private $_dirRoot;
        private $_filter;
        private $_tmpBuff                        =        array();

        public function __construct($dirRoot = '.')
        {
                $this->_dirRoot = $dirRoot;
        }
       
        //使用 过滤器 或者 设置 $_safeFile ....
        public function setFilter($filter)
        {
                $this->_filter = $filter;
        }

        public function listDirFile($dir = '', $action='')
        {
                $curDir = ( empty($dir) ) ? $this->_dirRoot : $dir;
               
                $dh = @opendir($curDir);

                while ( $tmpName = readdir($dh) )
                {
                        if ( ($tmpName == '.') || ($tmpName == '..') ) continue;
                        $totalPath = $curDir . '/' . $tmpName;
                       
                        if ( is_object($this->_filter) )
                        {
                                if ( $this->_filter->doFilter($totalPath) ) continue;
                        }

                        if ( is_dir($totalPath) )
                        {
                                $this->_tmpBuff['0'][] = $tmpName;
                                if ( _DEBUG )
                                {
                                        echo 'is dir:' . $totalPath . '
';
                                }
                                if ( is_object($action) )
                                {
                                        $action->doAction($totalPath);
                                }
                                $this->listDirFile($totalPath, $action);
                        }
                        else
                        {
                                $this->_tmpBuff['1'][] = $tmpName;
                                if ( _DEBUG )
                                {
                                        echo 'is file:' . $totalPath . '
';
                                }
                                if ( is_object($action) )
                                {
                                        $action->doAction($totalPath);
                                }
                        }
                }
                closedir($dh);
        }
}

interface DirAction
{
        public function doAction($args);
}

interface DirFilter
{
        public function doFilter($args);
}

class NowAction implements DirAction
{
        public function doAction($args)
        {
                if ( _DEBUG )
                {
                        $numArgs = func_num_args();
                        echo $numArgs . '
';

                        for( $i = 0; $i                         print_r(func_get_arg($i) . '
');
                }
        }
}

=====================================================
应用 部分

set_time_limit(0);
require 'DirTree.php';

class Gbk2Utf8Action implements DirAction
{
        public function doAction($args)
        {
                $aimPath = ereg_replace('D:/html/web','D:/back', $args);
                if ( is_file($args) )
                {
                        $file = implode ('', file($args));
                        $content = iconv("gb2312", "UTF-8", $file);
                        $fh = fopen($aimPath, 'w');
                        fwrite($fh, $content);
                        fclose($fh);
                }
                else
                {
                        mkdir($aimPath);
                }
        }
}

class HtmlPhpFilter implements DirFilter
{
        public function doFilter($args)
        {
                $suffix = substr(strrchr($args, '.'), 1);
                if ( ('htm' == $suffix) || ('php' == $suffix) )
                        return false;
                else if ( is_dir($args) )
                        return false;
                else
                        return true;
        }
}

$dirTree = new DirTree();
$action = new Gbk2Utf8Action();
$filter = new HtmlPhpFilter();

$dirTree->setFilter($filter);
$dirTree->listDirFile('D:/html/web', $action);

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PyCharm の使用法チュートリアル: 操作の実行方法を詳しく説明します PyCharm の使用法チュートリアル: 操作の実行方法を詳しく説明します Feb 26, 2024 pm 05:51 PM

PyCharm は非常に人気のある Python 統合開発環境 (IDE) であり、Python 開発をより効率的かつ便利にするための豊富な機能とツールを提供します。この記事では、PyCharm の基本的な操作方法を紹介し、読者がすぐに使い始めてツールの操作に習熟できるように、具体的なコード例を示します。 1. PyCharm をダウンロードしてインストールします。 まず、PyCharm 公式 Web サイト (https://www.jetbrains.com/pyc) にアクセスする必要があります。

C言語で複数の条件を判定するifの書き方 C言語で複数の条件を判定するifの書き方 Mar 25, 2024 pm 03:24 PM

C 言語では、if ステートメントは通常、単一の条件に基づいてコードの特定のブロックを実行するために使用されます。ただし、&&、||、! などの論理演算子を使用して、複数の条件を組み合わせて判定することができます。複数の条件を判断するために論理 AND (&&) を使用すること、少なくとも 1 つの条件を判断するために論理 OR (||) を使用すること、単一の条件の否定を判断するために論理 NOT (!) を使用すること、および if ステートメントのネストと括弧の使用が含まれます。優先順位を明確にするため。

sudo とは何ですか?なぜ重要ですか? sudo とは何ですか?なぜ重要ですか? Feb 21, 2024 pm 07:01 PM

sudo (スーパーユーザー実行) は、一般ユーザーが root 権限で特定のコマンドを実行できるようにする、Linux および Unix システムの重要なコマンドです。 sudo の機能は主に次の側面に反映されています。 権限制御の提供: sudo は、ユーザーにスーパーユーザー権限を一時的に取得することを許可することで、システム リソースと機密性の高い操作を厳密に制御します。一般のユーザーは、必要な場合にのみ sudo を介して一時的な権限を取得できるため、常にスーパーユーザーとしてログインする必要はありません。セキュリティの向上: sudo を使用すると、日常的な操作中に root アカウントの使用を回避できます。すべての操作に root アカウントを使用すると、誤った操作や不注意な操作には完全な権限が与えられるため、予期しないシステムの損傷につながる可能性があります。そして

Linux Deployの操作手順と注意事項 Linux Deployの操作手順と注意事項 Mar 14, 2024 pm 03:03 PM

LinuxDeploy の操作手順と注意事項 LinuxDeploy は、ユーザーが Android デバイスにさまざまな Linux ディストリビューションを迅速に展開できるようにする強力なツールで、ユーザーはモバイル デバイスで完全な Linux システムを体験できます。この記事では、LinuxDeploy の操作手順と注意事項を詳しく紹介し、読者がこのツールをより効果的に使用できるように、具体的なコード例を示します。操作手順: Linux のインストールDeploy: まず、インストールします

iOS の開発者バージョンとパブリック バージョンの違いは何ですか? iOS の開発者バージョンとパブリック バージョンの違いは何ですか? Mar 01, 2024 pm 12:55 PM

毎年、Apple が iOS と macOS の新しいメジャー バージョンをリリースする前に、ユーザーは数か月前にベータ版をダウンロードして最初に体験することができます。同ソフトウェアは一般ユーザーと開発者の両方が使用するため、Appleは開発者向けベータ版のパブリックベータ版である開発者版とパブリック版を両方向けに開始した。 iOS の開発者バージョンとパブリック バージョンの違いは何ですか?文字通りに言うと、開発者バージョンは開発者テスト バージョンであり、パブリック バージョンは公開テスト バージョンです。開発者バージョンとパブリック バージョンは、異なるユーザーを対象としています。開発者バージョンは、Apple が開発者によるテストのために使用します。ダウンロードしてアップグレードするには、Apple 開発者アカウントが必要です。

Win10 起動パスワードの F2 キーを押すのを忘れた場合の対処方法 Win10 起動パスワードの F2 キーを押すのを忘れた場合の対処方法 Feb 28, 2024 am 08:31 AM

おそらく多くのユーザーは、自宅に未使用のコンピュータを複数台持っており、長期間使用していなかったためにパワーオン パスワードを完全に忘れてしまったため、パスワードを忘れた場合の対処方法を知りたいと考えています。それでは、一緒に見てみましょう。 win10 起動パスワードの F2 キーを押し忘れた場合の対処方法 1. コンピューターの電源ボタンを押し、コンピューターの電源を入れるときに F2 キーを押します (コンピューターのブランドによって、BIOS に入るボタンが異なります)。 2. BIOS インターフェイスで、セキュリティ オプションを見つけます (コンピューターのブランドによって場所が異なる場合があります)。通常は上部の設定メニューにあります。 3. 次に、「SupervisorPassword」オプションを見つけてクリックします。 4. この時点で、ユーザーは自分のパスワードを確認できると同時に、その横にある [有効] を見つけて [無効] に切り替えることができます。

Huawei Mate60 Proのスクリーンショット操作手順の共有 Huawei Mate60 Proのスクリーンショット操作手順の共有 Mar 23, 2024 am 11:15 AM

スマートフォンの普及に伴い、スクリーンショット機能は携帯電話を日常的に使用する上で必須のスキルの 1 つになりました。 Huaweiの主力携帯電話の1つであるHuawei Mate60Proのスクリーンショット機能は、当然のことながらユーザーの注目を集めています。今日は、誰もがより便利にスクリーンショットを撮れるように、Huawei Mate60Pro携帯電話のスクリーンショットの操作手順を共有します。まず、Huawei Mate60Pro携帯電話はさまざまなスクリーンショット方法を提供しており、個人の習慣に応じて自分に合った方法を選択できます。以下は、一般的に使用されるいくつかのインターセプトの詳細な紹介です。

ディレクトリを自動生成する方法 自動生成されるディレクトリの形式を設定する方法 ディレクトリを自動生成する方法 自動生成されるディレクトリの形式を設定する方法 Feb 22, 2024 pm 03:30 PM

Wordでカタログのスタイルを選択すると、操作完了後に自動生成されます。分析 1. コンピューター上の Word に移動し、クリックしてインポートします。 2入力後、ファイルディレクトリをクリックします。 3 次に、ディレクトリのスタイルを選択します。 4. 操作が完了すると、ファイル ディレクトリが自動的に生成されることがわかります。補足: 概要/メモ記事の目次は、第 1 レベルの見出し、第 2 レベルの見出し、および第 3 レベルの見出しを含めて自動的に生成されます (通常は第 3 レベルの見出しまでです)。

See all articles