ディレクトリを走査し、ファイルの内容をバッチで置換するためのクラス ソリューションを作成しました。
ディレクトリを走査し、ファイルの内容をバッチで置き換えるクラスを書きました
このクラスは、以前必要になったときに書きました。
機能:
1 ディレクトリ内のすべてのファイルを検索します (サフィックス名を指定できます)
2 ファイルの内容を一括置換します (通常、文字列)
3 ファイルのサフィックス名を一括置換します
4 一括置換ファイルエンコーディング
使用例:
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $dirExplorer = new DirExplorerClass(); $dirExplorer->getDirExplorer('D:/test1/test2/'); //遍历目录D:/test1/test2/ $dirExplorer->modifyFileBy_replace('aa','QQ','shift-jis','UTF-8','txt','TXT'); //将所有文件内容中的aa替换为QQ,文件编码从shift-jis转换为UTF-8,将所有txt的后缀名改为TXT
クラスコード:
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> クラス DirExplorerClass{ var $dirPath_array = array();// ファイルの結果コレクションを走査します 関数 __construct(){ //何もしない } /* * ディレクトリハンドルを返すか、死ぬ */ プライベート関数 openDir($dirPath_target) { if (is_dir($dirPath_target)) { opendir($dirPath_target)を返します; }それ以外 { die("$dirPath_target はディレクトリではありません"); } } /* * ディレクトリハンドルを閉じる */ プライベート関数 closeDir($dirHander) { 閉じられたir($dirHander); } /* * 指定されたディレクトリを走査し、その下のファイル名のセットを返します * *パラメータ: * 1 dirPath: トラバースするフォルダー * 2 拡張子: 指定されたサフィックス名を持つファイルのみを返します * 戻る: * ファイルの結果コレクションをトラバースします */ function getDirExplorer($dirPath,$extension=''){ $dirHander=$this->openDir($dirPath); while($fileName = readdir($dirHander)){ if($ファイル名 !='.' && $ファイル名 !='..'){ $path = $dirPath."/" . $fileName; if(is_dir($path)){ $this->getDirExplorer($path); }それ以外{ if(isset($extension) && $extension != ''){ $fileExtension = end(explode('.',$fileName)); if($fileExtension != $extension){ 続く; } } $this->dirPath_array[]=$path; } } } $this->closeDir($dirHander); $this->dirPath_array を返します; } /* * 文字列置換ファイルの内容 (大文字と小文字を区別)、エンコーディング、サフィックス名 * *パラメータ: ※1 検索:置換する文字列(配列も可) ※2 replace:置換後の文字列(配列も可) * 3 in_charset: オリジナルのエンコーディング * 4 out_charset: 新しいエンコーディング * 5 in_extension: 元のサフィックス名 * 6 out_extension: 新しいサフィックス名 * 戻る: *真または偽 */ functionmodifyFileBy_replace($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension=''){ /* 入力チェック */ もし( !isset($search) || !isset($replace) || (strlen($in_charset)!=0 && strlen($in_charset)==0) || (strlen($in_charset)==0 && strlen($in_charset)!=0) || (strlen($in_extension)!=0 && strlen($out_extension)==0) || (strlen($in_extension)==0 && strlen($out_extension)!=0) ){ false を返します。 } foreach($this->dirPath_array as $key=>$file) { $content = file_get_contents($file);//コンテンツを読み取る $content = str_replace($search, $replace, $content); if(strlen($in_charset)!=0 && strlen($out_charset)!=0){ /* エンコードを変更します */ $this->changeCharset($in_charset, $out_charset, 1, $content); } リンクを解除($file); if(strlen($in_extension)!=0 && strlen($out_extension)!=0){ /* ファイルの拡張子を変更します */ $this->changeExtension($in_extension, $out_extension, 1, $file); } file_put_contents($file, $content); unset($content); /* トラバーサル ファイル名の結果セットを更新します */ $this->dirPath_array[$key] = $file; } true を返します。 } /* * 文字列置換ファイルの内容 (大文字と小文字は無視)、エンコーディング、サフィックス名 */ functionmodifyFileBy_ireplace($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension=''){ //もう投稿されません。上記のmodifyFileBy_replaceと同じですが、str_ireplaceに置き換えられるだけです。 } /* * ファイルの内容 (大文字と小文字は無視)、エンコーディング、サフィックス名を定期的に置き換えます * *パラメータ: ※1 検索:置換が必要な正規表現 *2 replace: 置換された文字列 * 3 in_charset: オリジナルのエンコーディング * 4 out_charset: 新しいエンコーディング * 5 in_extension: 元のサフィックス名 * 6 out_extension: 新しいサフィックス名 * 戻る: *真または偽 */ functionmodifyFileBy_regex($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension=''){ /* 入力チェック */ もし( !isset($search) || !isset($replace) || (strlen($in_charset)!=0 && strlen($in_charset)==0) || (strlen($in_charset)==0 && strlen($in_charset)!=0) || (strlen($in_extension)!=0 && strlen($out_extension)==0) || (strlen($in_extension)==0 && strlen($out_extension)!=0) ){ false を返します。 }if(preg_match('!([a-zA-Zs]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { /* $search から eval-modifier を削除します */ $search = substr($search, 0, -strlen($match[1])) 。 preg_replace('![es]+!', '', $match[1]); } foreach($this->dirPath_array as $key=>$file) { $content = file_get_contents($file);//コンテンツを読み取る $content = preg_replace($search, $replace, $content); if(strlen($in_charset)!=0 && strlen($out_charset)!=0){ /* エンコードを変更します */ $this->changeCharset($in_charset, $out_charset, 1, $content); } リンクを解除($file); if(strlen($in_extension)!=0 && strlen($out_extension)!=0){ /* ファイルの拡張子を変更します */ $this->changeExtension($in_extension, $out_extension, 1, $file); } file_put_contents($file, $content); unset($content); /*更新遍历文件名结果集 */ $this->dirPath_array[$key] = $file; } true を返します。 } /* * 变换编码 * * パラメータ: * 1 in_charset: 原コード * 2 out_charset: 新编码 * 3 フラグ: 0对遍得得文件转换编码 1对指定内容转换编码 ※4内容:フラグが1の場合のみ使用 * 戻る: *真または偽 */ function changeCharset($in_charset='', $out_charset='', $flag=0, &$content=''){ /* 入力チェック */ if (strlen($in_charset)==0 || strlen($out_charset)==0){ false を返します。 } if($flag == 0){ /* 对遍历得的文件转换编码 */ foreach($this->dirPath_array as $file) { $content = file_get_contents($file);//コンテンツを読み取る /* エンコードを変更します */ $content = iconv($in_charset, $out_charset, $content); リンクを解除($file); file_put_contents($file, $content); unset($content); } }それ以外{ /* 对指定内容转换编码 */ if(strlen($content) != 0){ $content = iconv($in_charset, $out_charset, $content); } } true を返します。 } /* * 变换後缀名 * * パラメータ: * 1 in_extension: 原後缀名 * 2 out_extension: 新后缀名 * 3 フラグ: 0对遍历得た文件变换后缀名 1对指定文件名变换后缀名 * 4 ファイル名: フラグが 1 の場合に使用 * 戻る: *真または偽 */ function changeExtension($in_extension='', $out_extension='', $flag=0, &$fileName=''){ /* 入出力チェック */ if(strlen($in_extension)==0 || strlen($out_extension)==0){ false を返します。 } if($flag == 0){ /* 对遍历得的文件变换後缀名 */ foreach($this->dirPath_array as $key=>$file) { /* ファイルの拡張子を変更します */ $tmp =explode('.',$file); $nowExtension = array_pop($tmp); if($nowExtension == $in_extension){ $content = file_get_contents($file);//コンテンツを読み取る リンクを解除($file); $file = implode('.',$tmp).'.'.$out_extension; file_put_contents($file, $content); unset($content); } /* 更新遍历文件名结果集 */ $this->dirPath_array[$key] = $file; } }それ以外{ /* 对指定文件名变换后缀名 */ if(strlen($fileName) != 0){ $tmp =explode('.',$fileName); $nowExtension = array_pop($tmp); if($nowExtension == $in_extension){ $fileName = implode('.',$tmp).'.'.$out_extension; } } } true を返します。 } } <div class="clear"></div>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

ファイルの親パスを取得するには、Java の File.getParent() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。場合によっては、ファイルの親パス、つまりファイルが存在するフォルダーのパスを取得する必要があることがあります。 Java の File クラスには、ファイルまたはフォルダーの親パスを取得する getParent() メソッドが用意されています。 File クラスは、ファイルとフォルダーを Java で抽象表現したもので、ファイルとフォルダーを操作するための一連のメソッドを提供します。その中で、手に入れてください

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します

Java で File.delete() メソッドを使用してファイルまたはディレクトリを削除するにはどうすればよいですか?概要: Java では、File クラスの delete() メソッドを使用してファイルまたはディレクトリを削除できます。このメソッドは、指定されたファイルまたはディレクトリを削除するために使用されます。ただし、この方法では、他のプログラムによって開かれていない空のディレクトリまたはファイルしか削除できないことに注意してください。ファイルまたはディレクトリの削除が失敗した場合は、IOException をキャッチすることで特定の理由を見つけることができます。ステップ 1: 関連パッケージをインポートする まず、

Java の File.mkdirs() 関数を使用して複数レベルのディレクトリを作成する Java では、ファイルを保存および整理するためにフォルダーを作成する必要がよくあります。場合によっては、サブフォルダーを含むフォルダーであるマルチレベルのディレクトリを作成する必要があります。 Java では、この関数を実装するために File クラスの mkdirs() 関数が提供されています。 Fileクラスはファイルやディレクトリを扱うJavaのクラスで、ファイルやディレクトリを操作するための一連のメソッドを提供します。このうち mkdirs() 関数は、複数階層のディレクトリを作成する関数です。下
