ホームページ バックエンド開発 PHPチュートリアル PHPで実装したファイルディレクトリ操作クラス

PHPで実装したファイルディレクトリ操作クラス

Jul 25, 2016 am 08:56 AM

  1. /**
  2. * ファイルディレクトリ操作クラス
  3. * 編集者: bbs.it-home.org
  4. * 例:
  5. * $fileutil = new fileDirUtil();
  6. * $fileutil->createDir('a/1/2/3') ; 作成フォルダーをテストするには、/1/2/3 フォルダーを作成します
  7. * $fileutil->createFile('b/1/2/3'); 作成ファイルをテストするには、b/1/ の下に作成します。 2/ フォルダー 3 つのファイル
  8. * $fileutil->createFile('b/1/2/3.txt'); 作成ファイルをテストするには、b/1/2/ フォルダーの下に 3.exe ファイルを作成します。
  9. * $fileutil-> ;writeFile('b/1/2/3.txt','これは私が書くものです!'); ファイルにコンテンツを書き込みます
  10. * $arr = $fileutil->readFile2array('example /mysql.txt') ;
  11. * $arr = $fileutil->readsFile('example/mysql.txt');
  12. * $size=$fileutil->bitSize($fileutil->getDirSize("example") )); ファイルまたはディレクトリのサイズを取得します
  13. * $fileutil->copyDir('b','d/e'); コピー フォルダーをテストして d/e フォルダーを作成し、b フォルダーの内容をコピーします
  14. * $fileutil-> ;copyFile('b/1/2/3.exe','b/b/3.exe'); ファイルをテストコピーして b/b フォルダーを作成し、3. を入れます。 b/1/2 フォルダーに exe ファイルをコピーします
  15. * $fileutil->moveDir('a/','b/c'); フォルダーの移動をテストし、b/c フォルダーを作成し、その内容を移動します。 a フォルダーをその中に入れて、フォルダーを削除します
  16. * $fileutil->moveFile('b/1/2/3.exe','b/d/3.exe'); ファイルの移動をテストして b/ を作成しますdフォルダーにb/を置き、3.exeを1/2に移動します
  17. * $fileutil->unlinkFile('b/d/3.exe'); ファイルの削除をテストし、b/d/3を削除します。 exe ファイル
  18. * $fileutil->unlinkDir ('d'); d フォルダーを削除するためのテスト削除フォルダー
  19. * $list = $fileutil->dirList("E:example");ディレクトリ
  20. * $list = $fileutil ->dirTree("/"); テスト リスト フォルダー ツリーは、ディレクトリ内のすべてのファイルの直接のツリー関係をリストします
  21. */
  22. class fileDirUtil {
  23. /**
  24. * フォルダーを作成します
  25. *
  26. * @param string $aimUrl
  27. * @return viod
  28. */
  29. function createDir($aimUrl, $mode = 0777) {
  30. $aimUrl = str_replace ( '', '/', $aimUrl );
  31. $aimDir = '';
  32. $arr = 爆発 ( '/', $aimUrl );
  33. foreach ( $arr as $str ) {
  34. $aimDir .= $str . '/';
  35. if (! file_exists ( $aimDir )) {
  36. mkdir ( $aimDir, $mode );
  37. }
  38. }
  39. }
  40. /**
  41. * ファイルを作成します
  42. *
  43. * @param string $aimUrl
  44. * @param boolean $overWrite このパラメータは、元のファイルを上書きするかどうかを制御します
  45. * @return boolean
  46. */
  47. function createFile($aimUrl, $overWrite = false) {
  48. if (file_exists ( $aimUrl ) && $overWrite == false) {
  49. return false;
  50. } elseif (file_exists ( $aimUrl ) && $overWrite == true) {
  51. $this->unlinkFile ( $aimUrl );
  52. }
  53. $aimDir = ディレクトリ名 ( $aimUrl );
  54. $this->createDir ( $aimDir );
  55. タッチ ( $aimUrl );
  56. true を返します。
  57. }
  58. /**
  59. * フォルダーを移動
  60. *
  61. * @param string $oldDir
  62. * @param string $aimDir
  63. * @param boolean $overWrite このパラメーターは、元のファイルを上書きするかどうかを制御します
  64. * @return boolean
  65. */
  66. function moveDir($oldDir, $aimDir, $overWrite = false) {
  67. $aimDir = str_replace ( '', '/', $aimDir );
  68. $aimDir = substr ( $aimDir, - 1 ) == '/' ? $aimDir : $aimDir 。 '/';
  69. $oldDir = str_replace ( '', '/', $oldDir );
  70. $oldDir = substr ( $oldDir, - 1 ) == '/' ? $oldDir : $oldDir 。 '/';
  71. if (! is_dir ( $oldDir )) {
  72. false を返します。
  73. }
  74. if (! file_exists ( $aimDir )) {
  75. $this->createDir ( $aimDir );
  76. }
  77. @$dirHandle = opendir ( $oldDir );
  78. if (! $dirHandle) {
  79. false を返します。
  80. }
  81. while ( false !== ($file = readdir ( $dirHandle )) ) {
  82. if ($file == '.' || $file == '..') {
  83. 続行;
  84. }
  85. if (! is_dir ( $oldDir . $file )) {
  86. $this->moveFile ( $oldDir . $file, $aimDir . $file, $overWrite );
  87. } else {
  88. $this->moveDir ( $oldDir . $file, $aimDir . $file, $overWrite );
  89. }
  90. }
  91. closedir ( $dirHandle );
  92. rmdir ( $oldDir ) を返します。
  93. }
  94. /**
  95. * ファイルを移動
  96. *
  97. * @param string $fileUrl
  98. * @param string $aimUrl
  99. * @param boolean $overWrite このパラメータは、元のファイルを上書きするかどうかを制御します
  100. * @return boolean
  101. */
  102. function moveFile($fileUrl, $aimUrl, $overWrite = false) {
  103. if (! file_exists ( $fileUrl )) {
  104. return false;
  105. }
  106. if (file_exists ( $aimUrl ) && $overWrite = false) {
  107. return false;
  108. } elseif (file_exists ( $aimUrl ) && $overWrite = true) {
  109. $this->unlinkFile ( $aimUrl );
  110. }
  111. $aimDir = ディレクトリ名 ( $aimUrl );
  112. $this->createDir ( $aimDir );
  113. 名前を変更します ( $fileUrl, $aimUrl );
  114. true を返します。
  115. }
  116. /**
  117. * フォルダーを削除
  118. *
  119. * @param string $aimDir
  120. * @return boolean
  121. */
  122. function unlinkDir($aimDir) {
  123. $aimDir = str_replace ( '', '/', $aimDir );
  124. $aimDir = substr ( $aimDir, - 1 ) == '/' ? $aimDir : $aimDir 。 '/';
  125. if (! is_dir ( $aimDir )) {
  126. return false;
  127. }
  128. $dirHandle = opendir ( $aimDir );
  129. while ( false !== ($file = readdir ( $dirHandle )) ) {
  130. if ($file == '.' || $file == '..') {
  131. 続行;
  132. }
  133. if (! is_dir ( $aimDir . $file )) {
  134. $this->unlinkFile ( $aimDir . $file );
  135. } else {
  136. $this->unlinkDir ( $aimDir . $file );
  137. }
  138. }
  139. closedir ( $dirHandle );
  140. rmdir ( $aimDir ) を返します。
  141. }
  142. /**
  143. * ファイルを削除します
  144. *
  145. * @param string $aimUrl
  146. * @return boolean
  147. */
  148. function unlinkFile($aimUrl) {
  149. if (file_exists ( $aimUrl )) {
  150. unlink ( $aimUrl );
  151. true を返します。
  152. } else {
  153. false を返します。
  154. }
  155. }
  156. /**
  157. * フォルダーをコピー
  158. *
  159. * @param string $oldDir
  160. * @param string $aimDir
  161. * @param boolean $overWrite このパラメータは、元のファイルを上書きするかどうかを制御します
  162. * @return boolean
  163. */
  164. function copyDir($oldDir, $aimDir, $overWrite = false) {
  165. $aimDir = str_replace ( '', '/', $aimDir );
  166. $aimDir = substr ( $aimDir, - 1 ) == '/' ? $aimDir : $aimDir 。 '/';
  167. $oldDir = str_replace ( '', '/', $oldDir );
  168. $oldDir = substr ( $oldDir, - 1 ) == '/' ? $oldDir : $oldDir 。 '/';
  169. if (! is_dir ( $oldDir )) {
  170. false を返します。
  171. }
  172. if (! file_exists ( $aimDir )) {
  173. $this->createDir ( $aimDir );
  174. }
  175. $dirHandle = opendir ( $oldDir );
  176. while ( false !== ($file = readdir ( $dirHandle )) ) {
  177. if ($file == '.' || $file == '..') {
  178. 続行;
  179. }
  180. if (! is_dir ( $oldDir . $file )) {
  181. $this->copyFile ( $oldDir . $file, $aimDir . $file, $overWrite );
  182. } else {
  183. $this->copyDir ( $oldDir . $file, $aimDir . $file, $overWrite );
  184. }
  185. }
  186. return Closedir ( $dirHandle );
  187. }
  188. /**
  189. * ファイルをコピー
  190. *
  191. * @param string $fileUrl
  192. * @param string $aimUrl
  193. * @param boolean $overWrite このパラメータは、元のファイルを上書きするかどうかを制御します
  194. * @return boolean
  195. */
  196. function copyFile($fileUrl, $aimUrl, $overWrite = false) {
  197. if (! file_exists ( $fileUrl )) {
  198. return false;
  199. }
  200. if (file_exists ( $aimUrl ) && $overWrite == false) {
  201. return false;
  202. } elseif (file_exists ( $aimUrl ) && $overWrite == true) {
  203. $this->unlinkFile ( $aimUrl );
  204. }
  205. $aimDir = ディレクトリ名 ( $aimUrl );
  206. $this->createDir ( $aimDir );
  207. コピー ( $fileUrl, $aimUrl );
  208. true を返します。
  209. }
  210. /**
  211. * 文字列をファイルに書き込む
  212. *
  213. * @param string $filename ファイル名
  214. * @param boolean $str 書き込む文字データ
  215. */
  216. function writeFile($filename, $str) {
  217. if (function_exists ( file_put_contents )) {
  218. file_put_contents ( $filename, $str );
  219. } else {
  220. $fp = fopen ( $filename, "wb" );
  221. fwrite ( $fp, $str );
  222. fclose ( $fp );
  223. }
  224. }
  225. /**
  226. * ファイルの内容全体を文字列に読み込みます
  227. *
  228. * @param string $filename ファイル名
  229. * @return array
  230. */
  231. function readsFile($filename) {
  232. if (function_exists ( file_get_contents )) {
  233. return file_get_contents ( $filename );
  234. } else {
  235. $fp = fopen ( $filename, "rb" );
  236. $str = fread ( $fp, ファイルサイズ ( $filename ) );
  237. fclose ( $fp );
  238. $str; を返します。
  239. }
  240. }
  241. /**
  242. * ファイルの内容を配列に読み込みます
  243. *
  244. * @param string $filename ファイル名
  245. * @return array
  246. */
  247. function readFile2array($filename) {
  248. $file = file ( $filename );
  249. $arr = 配列();
  250. foreach ( $file as $value ) {
  251. $arr [] = トリム ( $value );
  252. }
  253. $arr を返します。
  254. }
  255. /**
  256. * / に変換します
  257. *
  258. * @param string $path パス
  259. * @return string パス
  260. */
  261. function dirPath($path) {
  262. $path = str_replace ( '\', '/', $path );
  263. if (substr ( $path, - 1 ) != '/')
  264. $path = $path 。 '/';
  265. $path を返す;
  266. }
  267. /**
  268. * ディレクトリ配下のすべてのファイルエンコード形式を変換します
  269. *
  270. * @param string $in_charset 元の文字セット
  271. * @param string $out_charset 対象の文字セット
  272. * @param string $dir ディレクトリアドレス
  273. * @param string $fileexts 変換されたファイルformat
  274. * @return string 元の文字セットとターゲットの文字セットが同じ場合は false を返し、それ以外の場合は true を返します
  275. */
  276. function dirIconv($in_charset, $out_charset, $dir, $fileexts = 'php|html|htm|shtml|shtm|js|txt|xml') {
  277. if ($ in_charset == $out_charset)
  278. false を返します。
  279. $list = $this->dirList ( $dir );
  280. foreach ( $list as $v ) {
  281. if (preg_match ( "/.($fileexts)/i", $v ) && is_file ( $v )) {
  282. file_put_contents ( $v, iconv ( $in_charset, $out_charset , file_get_contents ( $v ) ) );
  283. }
  284. }
  285. true を返します。
  286. }
  287. /**
  288. * ディレクトリ内のすべてのファイルをリストします
  289. *
  290. * @param string $path パス
  291. * @param string $exts 拡張子
  292. * @param array $list 追加されたファイルリスト
  293. * @return 条件を満たすすべてのファイルを配列
  294. */
  295. function dirList($path, $exts = '', $list = array()) {
  296. $path = $this->dirPath ( $path );
  297. $files = glob ( $path . '*' );
  298. foreach ( $files as $v ) {
  299. $fileext = $this->fileext ( $v );
  300. if (! $exts || preg_match ( "/.($exts)/i", $v )) {
  301. $list [] = $v;
  302. if (is_dir ( $v )) {
  303. $list = $this->dirList ( $v, $exts, $list );
  304. }
  305. }
  306. }
  307. $list を返します。
  308. }
  309. /**
  310. * ディレクトリ配下のすべてのファイルのアクセスと変更時刻を設定します
  311. *
  312. * @param string $path path
  313. * @param int $mtime 変更時刻
  314. * @param int $atime アクセス時刻
  315. * @return array アクセス時刻を返すディレクトリではない場合は false、それ以外の場合は true を返します
  316. */
  317. function dirTouch($path, $mtime = TIME, $atime = TIME) {
  318. if (! is_dir ( $path ))
  319. return false;
  320. $path = $this->dirPath ( $path );
  321. if (! is_dir ( $path ))
  322. touch ( $path, $mtime, $atime );
  323. $files = glob ( $path . '*' );
  324. foreach ( $files as $v ) {
  325. is_dir ( $v ) ? $this->dirTouch ( $v, $mtime, $atime ) : touch ( $v, $mtime, $atime );
  326. }
  327. true を返します。
  328. }
  329. /**
  330. * ディレクトリリスト
  331. *
  332. * @param string $dir path
  333. * @param int $parentid 親 ID
  334. * @param array $dirs がディレクトリに渡されます
  335. * @return 配列はディレクトリとサブディレクトリのリストを返します
  336. */
  337. function dirTree($dir, $parentid = 0, $dirs = array()) {
  338. グローバル $id;
  339. if ($parentid == 0)
  340. $id = 0;
  341. $list = glob ( $dir . '*' );
  342. foreach ( $list as $v ) {
  343. if (is_dir ( $v )) {
  344. $id ++;
  345. $dirs [$id] = array ('id' => $id, 'parentid' => $parentid, 'name' => ベース名 ( $v ), 'dir' => $v . ' /' );
  346. $dirs = $this->dirTree ( $v . '/', $id, $dirs );
  347. }
  348. }
  349. $dirs を返します。
  350. }
  351. /**
  352. * ディレクトリリスト
  353. *
  354. * @param string $dir path
  355. * @return array ディレクトリリストを返す
  356. */
  357. function dirNodeTree($dir) {
  358. $d = dir ( $dir );
  359. $dirs = array();
  360. while ( false !== ($entry = $d->read ()) ) {
  361. if ($entry != '.' and $entry != '..' and is_dir ( $dir . '/' . $entry )) {
  362. $dirs[] = $entry;
  363. }
  364. }
  365. $dirs を返します。
  366. }
  367. /**
  368. * ディレクトリのサイズを取得します
  369. *
  370. * @param string $dirname directory
  371. * @return string bit B
  372. */
  373. function getDirSize($dirname) {
  374. if (! file_exists ( $dirname ) または ! is_dir ( $dirname ))
  375. return false;
  376. if (! $handle = opendir ( $dirname ))
  377. false を返します。
  378. $サイズ = 0;
  379. while ( false !== ($file = readdir ( $handle )) ) {
  380. if ($file == "." または $file == "..")
  381. 続行;
  382. $file = $dirname 。 「/」。 $ファイル;
  383. if (is_dir ( $file )) {
  384. $size += $this->getDirSize ( $file );
  385. } else {
  386. $size += ファイルサイズ ( $file );
  387. }
  388. }
  389. closedir ( $handle );
  390. $size を返します。
  391. }
  392. /**
  393. * バイトを Kb または Mb に変換します...
  394. * パラメータ $size はバイト サイズです
  395. */
  396. function bitSize($size) {
  397. if (! preg_match ( "/^[0-9]+$/", $num ))
  398. return 0;
  399. $type = array ("B", "KB", "MB", "GB", "TB", "PB" );
  400. $j = 0;
  401. while ( $num >= 1024 ) {
  402. if ($j >= 5)
  403. return $num 。 $type [$j];
  404. $num = $num / 1024;
  405. $j ++;
  406. }
  407. $num を返します。 $type [$j];
  408. }
  409. /**
  410. * ファイル名のサフィックスを取得します
  411. *
  412. * @param string $filename
  413. * @return string
  414. */
  415. function fileext($filename) {
  416. return addlashes (trim ( substr ( strrchr ( $filename, '.' ), 1, 10 ) ) );
  417. }
  418. }
  419. ?>
复制代


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

See all articles