PHP ファイルプログラミングの概要

不言
リリース: 2023-04-02 13:28:02
オリジナル
2118 人が閲覧しました

この記事では主に PHP ファイル プログラミングの入門を紹介します。一定の参考価値があります。今、みんなに共有します。必要な友人は参考にしてください。

1 ファイル情報の取得

1.1 最初の方法 (fopen、fstat、file_exists)

<?php
$file_full_path = &#39;./test.txt&#39;;
if(file_exists($file_full_path)){		// 检查文件或目录是否存在,存在则返回 TRUE,否则返回 FALSE
	$fp = fopen($file_full_path, &#39;r&#39;);	// 打开文件或url,成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。
	$fileinfo_arr = fstat($fp);			// 通过已打开的文件指针取得文件信息,返回一个数组具有该文件的统计信息

	echo &#39;<pre class="brush:php;toolbar:false">&#39;;
	var_dump($fileinfo_arr);

	echo &#39;文件的大小是:&#39; . $fileinfo_arr[&#39;size&#39;] . &#39;个字节&#39;;
	echo &#39;文件的创建时间是:&#39; . date(&#39;Y-m-d H:i:s&#39;, $fileinfo_arr[&#39;ctime&#39;]);
	echo &#39;文件的访问时间是:&#39; . date(&#39;Y-m-d H:i:s&#39;, $fileinfo_arr[&#39;atime&#39;]);
	echo &#39;文件的修改时间是:&#39; . date(&#39;Y-m-d H:i:s&#39;, $fileinfo_arr[&#39;mtime&#39;]);
}else{
	echo &#39;文件不存在&#39;;
}
ログイン後にコピー

1.2 2 番目の方法

<?php
$file_full_path = &#39;./test.txt&#39;;
if(file_exists($file_full_path)){
	echo &#39;文件的大小是:&#39; . filesize($file_full_path);
	echo &#39;文件的类型是:&#39; . filetype($file_full_path);

	echo &#39;文件的创建时间是:&#39; . date(&#39;Y-m-d H:i:s&#39;, filectime($file_full_path));
	echo &#39;文件的访问时间是:&#39; . date(&#39;Y-m-d H:i:s&#39;, fileatime($file_full_path));
	echo &#39;文件的修改时间是:&#39; . date(&#39;Y-m-d H:i:s&#39;, filemtime($file_full_path));
}else{
	echo &#39;文件不存在&#39;;
}
ログイン後にコピー

2 ファイルの内容を読み取る

2.1 最初の方法、fread

<?php
$file_full_path = &#39;./test.txt&#39;;
if(file_exists($file_full_path)){
	// 1、打开文件
	$fp = fopen($file_full_path, &#39;r&#39;);
	// 2、获取文件的大小
	$file_size = filesize($file_full_path);
	// 3、读取内容
	$con_str = fread($fp, $file_size);		// 返回所读取的字符串, 或者在失败时返回 FALSE。
	fclose($fp);
	// 替换换行符
	$con_str = str_replace("\r\n", &#39;<br>&#39;, $con_str);
	$con_str = str_replace("\n", &#39;<br>&#39;, $con_str);
	// 替换 tab
	$con_str = str_replace("	", "    ", $con_str);

	echo $con_str;

}else{
	echo &#39;文件不存在&#39;;
}
ログイン後にコピー

2.2 2 番目の方法、feof

<?php
$file_full_path = &#39;./test.txt&#39;;
if(file_exists($file_full_path)){
	$fp = fopen($file_full_path, &#39;r&#39;);
	// 设置缓冲
	$buffer = &#39;&#39;;
	$buffer_size = 1024;
	$con_str = &#39;&#39;;

	while(!feof($fp)){				// 测试文件指针是否到了文件结束的位置,到达返回true,否则返回false
		$buffer = fread($fp, $buffer_size);
		$con_str .= $buffer;
	}

	// 关闭文件
	fclose($fp);
	$con_str = str_replace("\r\n", &#39;<br>&#39;, $con_str);
	$con_str = str_replace("\n", &#39;<br>&#39;, $con_str);
	$con_str = str_replace("	", &#39;    &#39;, $con_str);
	echo $con_str;
}else{
	echo &#39;文件不存在&#39;;
}
ログイン後にコピー

2.3 3 番目の方法、file_get_contents

<?php
$file_full_path = &#39;./test.txt&#39;;
if(file_exists($file_full_path)){
	$con_str = file_get_contents($file_full_path);		//  将整个文件读入一个字符串

	$con_str = str_replace("\r\n", &#39;<br>&#39;, $con_str);
	$con_str = str_replace("\n", &#39;<br>&#39;, $con_str);
	$con_str = str_replace("	", &#39;    &#39;, $con_str);
	
	echo $con_str;
}else{
	echo &#39;文件不存在&#39;;
}
ログイン後にコピー

3 ファイルを作成してコンテンツを書き込む

3.1 ケース 1

<?php
$file_full_path = &#39;./test.txt&#39;;
if(!file_exists($file_full_path)){
	if($fp = fopen($file_full_path, &#39;w&#39;)){		// 覆盖写入10句helloworld
		$con = &#39;&#39;;
		for($i=0; $i<10; $i++){
			$con .= "HelloWorld\r\n";
		}

		// 写入文件
		fwrite($fp, $con);			// fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。 
		fclose($fp);
	}else{
		echo &#39;创建文件失败&#39;;
	}
}else{
	echo &#39;文件已经存在&#39;;
}
ログイン後にコピー

3.2 ケース 2、file_put_contents

<?php
$file_full_path = &#39;./test.txt&#39;;
if(!file_exists($file_full_path)){
	$con = &#39;&#39;;
	for($i=0; $i<10; $i++){
		$con .= "helloworld\r\n";
	}
	// 默认是覆盖写,可以追加FILE_APPEND参数,改为追加写。
	file_put_contents($file_full_path, $con);		// 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。 
}else{
	echo &#39;已经存在该文件&#39;;
}
ログイン後にコピー

4 ファイルの削除

<?php
$file_full_path = &#39;./test.txt&#39;;
if(file_exists($file_full_path)){
	if(unlink($file_full_path)){
		echo &#39;<br>删除成功&#39;;
	}else{
		echo &#39;<br>删除失败&#39;;
	}
}else{
	echo &#39;文件不存在,无法删除&#39;;
}
ログイン後にコピー

5 ファイル名の変更

<?php
$file_full_path = &#39;./test.txt&#39;;
$file_new_full_path = &#39;./王八.txt&#39;;
$file_new_full_path = iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $file_new_full_path);
if(file_exists($file_full_path)){
	if(rename($file_full_path, $file_new_full_path)){			// 重命名一个文件或目录
		echo &#39;改名成功!&#39;;
	}else{
		echo &#39;改名失败!&#39;;
	}
}else{
	echo &#39;文件不存在&#39;;
}
ログイン後にコピー

6 ファイル ディレクトリの操作

6.1 最初のファイルの作成-レベルのディレクトリ

<?php
$dir_full_path = &#39;./abc&#39;;

// 判断有没有该目录
if(!is_dir($dir_full_path)){
	if(mkdir($dir_full_path)){
		echo &#39;创建目录成功!&#39;;
	}else{
		echo &#39;创建目录失败!&#39;;
	}
}else{
	echo &#39;已经存在该目录,无法再次创建&#39;;
}
ログイン後にコピー

6.2 複数レベルのディレクトリの作成

<?php
$dir_full_path = &#39;./abc/edf/xyz&#39;;
if(!is_dir($dir_full_path)){
	if(mkdir($dir_full_path, 0777, true)){		// true 表示递归创建
		echo &#39;创建目录成功&#39;;
	}else{
		echo &#39;创建目录失败&#39;;
	}
}else{
	echo &#39;已经存在该目录,无法再次创建!&#39;;
}
ログイン後にコピー

6.3 ディレクトリ(第1レベル)の削除

<?php
$dir_full_path = &#39;./abc&#39;;
if(is_dir($dir_full_path)){
	if(rmdir($dir_full_path)){
		echo &#39;删除目录成功&#39;;
	}else{
		echo &#39;删除目录失败&#39;;
	}
}else{
	echo &#39;不存在该文件夹&#39;;
}
ログイン後にコピー

7 ファイルプログラミングの応用例

7.1 画像をコピーする方法

<?php
$file_src_full_path = &#39;F:/壁纸.jpg&#39;;
$file_src_full_path = iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $file_src_full_path);

$file_des_full_path = &#39;D:/amp/WWW/萧山.jpg&#39;;
$file_des_full_path = iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $file_des_full_path);

if(file_exists($file_src_full_path)){
	if(copy($file_src_full_path, $file_des_full_path)){
		echo &#39;拷贝成功&#39;;
	}else{
		echo &#39;拷贝失败&#39;;
	}
}else{
	echo &#39;没有这个文件&#39;;
}
ログイン後にコピー

7.2 フォルダーを走査し、フォルダーの下のコンテンツがディレクトリとファイルであるかどうかを確認します

<?php
$dir_full_path = &#39;D:/amp/WWW/&#39;;
if(is_dir($dir_full_path)){
	$dir_handle = opendir($dir_full_path);		// 如果成功则返回目录句柄的 resource,失败则返回 FALSE
	while(($file_name = readdir($dir_handle)) !== false){		// 成功则返回文件名 或者在失败时返回 FALSE 
		if(is_dir($dir_full_path . $file_name)){
			echo $file_name . &#39;是目录<br>&#39;;
		}else{
			echo $file_name . &#39;是文件<br>&#39;;
		}
	}

	closedir($dir_handle);
}else{
	echo &#39;不是目录,无法打开&#39;;
}
ログイン後にコピー

7.3 フォルダー内のすべてのファイルのサイズをカウントする関数を作成します。ディレクトリ

<?php
$dir_name = &#39;D:/amp/WWW&#39;;
function getDirSize($dir_name){
	$dir_size = 0;
	$dir_handle = opendir($dir_name);
	while(($file_name = readdir($dir_handle)) !== false){
		$file = $dir_name . &#39;/&#39; . $file_name;		// 文件全名
		if($file_name!==&#39;.&#39; && $file_name!==&#39;..&#39;){
			if(is_dir($file)){
				$dir_size += getDirSize($file);
			}else{
				$dir_size += filesize($file);
			}
		}
	}
	closedir($dir_handle);
	return $dir_size;
}

echo getDirSize($dir_name);
ログイン後にコピー
<br/>
ログイン後にコピー

7.4 ディレクトリの削除

<?php
$dir_name = &#39;D:/amp/WWW/.idea&#39;;
function rrmdir($src){
	$dir_handle = opendir($src);
	while(false !== ($file = readdir($dir_handle))){
		if(($file != &#39;.&#39;) && ($file != &#39;..&#39;)){
			$full = $src . &#39;/&#39; . $file;
			if(is_dir($full)){
				rrmdir($full);
			}else{
				unlink($full);
			}
		}
	}
	closedir($dir_handle);
	rmdir($src);
}
rrmdir($dir_name);
ログイン後にコピー

以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。その他の関連コンテンツについては、PHP をご覧ください。中国語のサイトです!

関連する推奨事項:

フォルダー内のすべてのファイルとサブファイルを走査するための php コード

PHP ファイルとディレクトリオペレーション#########

以上がPHP ファイルプログラミングの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!