写了个遍历目录、批量替换文件内容的类解决思路
写了个遍历目录、批量替换文件内容的类
之前有需要,就写了这个类。
功能:
1 遍历目录下的所有文件(可指定后缀名)
2 批量替换文件内容(正则、字符串)
3 批量替换文件后缀名
4 批量替换文件编码
使用例:
- PHP code
<!--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
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->class DirExplorerClass{ var $dirPath_array = array();//遍历文件结果集合 function __construct(){ //donothing } /* * return a directory handle or die */ private function openDir($dirPath_target) { if (is_dir($dirPath_target)) { return opendir($dirPath_target); }else { die("$dirPath_target is Not a Directory"); } } /* * close a directory handle */ private function closeDir($dirHander) { closedir($dirHander); } /* * 遍历指定目录,返回其下的文件名集合 * * Parameters: * 1 dirPath:需要遍历的文件夹 * 2 extension:只返回指定后缀名的文件 * Return: * 遍历文件结果集合 */ function getDirExplorer($dirPath,$extension=''){ $dirHander=$this->openDir($dirPath); while($fileName = readdir($dirHander)){ if($fileName !='.' && $fileName !='..'){ $path = $dirPath."/" . $fileName; if(is_dir($path)){ $this->getDirExplorer($path); }else{ if(isset($extension) && $extension != ''){ $fileExtension = end(explode('.',$fileName)); if($fileExtension != $extension){ continue; } } $this->dirPath_array[]=$path; } } } $this->closeDir($dirHander); return $this->dirPath_array; } /* * 字符串替换文件内容(区别大小写)、编码、后缀名 * * Parameters: * 1 search: 需要替换的字符串 (数组可) * 2 replace: 替换后的字符串 (数组可) * 3 in_charset: 原编码 * 4 out_charset: 新编码 * 5 in_extension: 原后缀名 * 6 out_extension:新后缀名 * Return: * true or false */ function modifyFileBy_replace($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension=''){ /* input check */ if( !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) ){ return false; } foreach($this->dirPath_array as $key=>$file) { $content = file_get_contents($file);//read contents $content = str_replace($search, $replace, $content); if(strlen($in_charset)!=0 && strlen($out_charset)!=0){ /* change the encode */ $this->changeCharset($in_charset, $out_charset, 1, $content); } unlink($file); if(strlen($in_extension)!=0 && strlen($out_extension)!=0){ /* change file's extension */ $this->changeExtension($in_extension, $out_extension, 1, $file); } file_put_contents($file, $content); unset($content); /* 更新遍历文件名结果集 */ $this->dirPath_array[$key] = $file; } return true; } /* * 字符串替换文件内容(忽略大小写)、编码、后缀名 */ function modifyFileBy_ireplace($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension=''){ //不贴了 和上面的modifyFileBy_replace一样 只是用str_ireplace替换而已 } /* * 正则替换文件内容(忽略大小写)、编码、后缀名 * * Parameters: * 1 search: 需要替换内容的正则表达式 * 2 replace: 替换后的字符串 * 3 in_charset: 原编码 * 4 out_charset: 新编码 * 5 in_extension: 原后缀名 * 6 out_extension:新后缀名 * Return: * true or false */ function modifyFileBy_regex($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension=''){ /* input check */ if( !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) ){ return false; } if(preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { /* remove eval-modifier from $search */ $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); } foreach($this->dirPath_array as $key=>$file) { $content = file_get_contents($file);//read contents $content = preg_replace($search, $replace, $content); if(strlen($in_charset)!=0 && strlen($out_charset)!=0){ /* change the encode */ $this->changeCharset($in_charset, $out_charset, 1, $content); } unlink($file); if(strlen($in_extension)!=0 && strlen($out_extension)!=0){ /* change file's extension */ $this->changeExtension($in_extension, $out_extension, 1, $file); } file_put_contents($file, $content); unset($content); /* 更新遍历文件名结果集 */ $this->dirPath_array[$key] = $file; } return true; } /* * 变换编码 * * Parameters: * 1 in_charset: 原编码 * 2 out_charset: 新编码 * 3 flag: 0对遍历得到的文件转换编码 1对指定内容转换编码 * 4 content: 仅在flag为1时使用 * Return: * true or false */ function changeCharset($in_charset='', $out_charset='', $flag=0, &$content=''){ /* input check */ if (strlen($in_charset)==0 || strlen($out_charset)==0){ return false; } if($flag == 0){ /* 对遍历得到的文件转换编码 */ foreach($this->dirPath_array as $file) { $content = file_get_contents($file);//read contents /* change the encode */ $content = iconv($in_charset, $out_charset, $content); unlink($file); file_put_contents($file, $content); unset($content); } }else{ /* 对指定内容转换编码 */ if(strlen($content) != 0){ $content = iconv($in_charset, $out_charset, $content); } } return true; } /* * 变换后缀名 * * Parameters: * 1 in_extension: 原后缀名 * 2 out_extension: 新后缀名 * 3 flag: 0对遍历得到的文件变换后缀名 1对指定文件名变换后缀名 * 4 fileName: 仅在flag为1时使用 * Return: * true or false */ function changeExtension($in_extension='', $out_extension='', $flag=0, &$fileName=''){ /* inout check */ if(strlen($in_extension)==0 || strlen($out_extension)==0){ return false; } if($flag == 0){ /* 对遍历得到的文件变换后缀名 */ foreach($this->dirPath_array as $key=>$file) { /* change file's extension */ $tmp = explode('.',$file); $nowExtension = array_pop($tmp); if($nowExtension == $in_extension){ $content = file_get_contents($file);//read contents unlink($file); $file = implode('.',$tmp).'.'.$out_extension; file_put_contents($file, $content); unset($content); } /* 更新遍历文件名结果集 */ $this->dirPath_array[$key] = $file; } }else{ /* 对指定文件名变换后缀名 */ if(strlen($fileName) != 0){ $tmp = explode('.',$fileName); $nowExtension = array_pop($tmp); if($nowExtension == $in_extension){ $fileName = implode('.',$tmp).'.'.$out_extension; } } } return true; }}<div class="clear"> </div>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











파일 크기를 얻으려면 Java의 File.length() 함수를 사용하십시오. 파일 크기는 파일 작업을 처리할 때 매우 일반적인 요구 사항입니다. Java는 파일 크기를 얻는 매우 편리한 방법, 즉 길이( ) File 클래스의 메서드입니다. 이 기사에서는 이 방법을 사용하여 파일 크기를 가져오는 방법을 소개하고 해당 코드 예제를 제공합니다. 먼저, 크기를 구하려는 파일을 나타내는 File 객체를 만들어야 합니다. File 객체를 생성하는 방법은 다음과 같습니다: Filef

오픈 소스에 대해 자세히 알아보려면 다음을 방문하세요. 51CTO Hongmeng 개발자 커뮤니티 https://ost.51cto.com 실행 환경 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. 애플리케이션을 생성하려면 파일을 클릭합니다. >새파일->CreateProgect. 템플릿 선택: [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의 파일 클래스는 파일과 폴더를 조작하는 데 사용되는 주요 클래스입니다. 파일 속성을 얻고 조작하는 다양한 방법을 제공합니다.

Java에서 File.delete() 메소드를 사용하여 파일이나 디렉토리를 삭제하는 방법은 무엇입니까? 개요: Java에서는 File 클래스의 delete() 메서드를 사용하여 파일이나 디렉터리를 삭제할 수 있습니다. 이 메소드는 지정된 파일이나 디렉토리를 삭제하는 데 사용됩니다. 그러나 이 방법은 다른 프로그램에서 열지 않은 빈 디렉터리나 파일만 삭제할 수 있다는 점에 유의해야 합니다. 파일 또는 디렉터리 삭제에 실패하는 경우 IOException을 포착하여 구체적인 이유를 찾을 수 있습니다. 1단계: 관련 패키지 가져오기 먼저, 다음이 필요합니다.

Java의 File.mkdirs() 함수를 사용하여 다중 레벨 디렉토리 생성 Java에서는 파일을 저장하고 구성하기 위해 폴더를 생성해야 하는 경우가 많습니다. 때로는 하위 폴더를 포함하는 폴더인 다중 레벨 디렉터리를 생성해야 하는 경우도 있습니다. Java는 이 함수를 구현하기 위해 File 클래스의 mkdirs() 함수를 제공합니다. File 클래스는 파일과 디렉터리를 처리하는 Java의 클래스입니다. 파일과 디렉터리를 작동하기 위한 일련의 메서드를 제공합니다. 그 중 mkdirs() 함수는 다단계 디렉터리를 생성하는 함수이다. 아래에
