ファイルとディレクトリの操作
PHP はローカルサーバー上のファイルやディレクトリを処理するのに非常に便利ですが、パーミッションやパス関連の問題が発生する場合があります
1.ファイルを開きます
resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )
$handle = fopen(filename,mode)//ファイルを開き、このファイルのリソースを表すハンドルを返します
ファイル名には、相対パス、絶対パス、またはネットワーク プロトコル モードを使用できます。開始モードは rr+ww+aa+xx+b です。
バイナリ ファイルを操作するときに「b」フラグを指定しないと、破損したイメージ ファイルや rn 文字に関する奇妙な問題など、いくつかの奇妙な問題が発生する可能性があります。
移植性の理由から、fopen() でファイルを開くときは常に「b」フラグを使用することを強くお勧めします。
ファイルを開く方法はいくつかあります
$fp = @fopen('log.txt',"rb");
$fp = @fopen('../log.txt',"rb");
$fp = @fopen("http://www.runer.com.cn/default.htm","rb");//ftp や ghoper などのプロトコルを php.ini で使用することもできます。ファイルを有効にする必要があります
/////////////////////////////コード部分////////////////// /// /////////////////////
$filename1 = "userinfo.txt"; //このファイルはディレクトリまたは include_path に存在します
$filename2 = "test.txt"; //このファイルはディレクトリまたは include_path に存在しません
$resource1 = fopen($filename1,"rb");
@$resource2 = fopen($filename2,"rb");//このファイルはディレクトリに存在せず、インクルードされたファイルのパスを見つけるために include_path または include_path が使用されないため、この操作はエラーを報告します。エラーサプレッサー @ を使用すると、ブラウザーを強制的にエラーメッセージが出力されなくなります
if($resource1)
echo "ファイル {$filename1} が正常に開きました";
if(!@fopen($filename2,"r"))
echo "ファイル {$filename2} を開けませんでした";
//////////////////////////////////////////////// /// //////////////////////////
----------出力結果--------------- - ------------
ファイル userinfo.txt が正常に開きました
-------------------------------------------------- ------------------
2. ファイルを使用した後、ファイルが使用されたことを PHP に明示的に伝える必要があります。これにより、オペレーティング システムは、ファイルのすべての内容がバッファからハードディスクに正しくフラッシュされるようにします
fclose() を使用してファイルを閉じます
bool fclose (リソースハンドル)//開いているファイルポインターを閉じる
3. ファイルの読み取り。fopen 関数の mode パラメーターを使用すると、ファイルからデータを読み取ることができます。
string fgets ( int handle [, int length] ) はファイル ポインターから行を読み取り、バイナリ ファイルで fgets を試行すると予測できない結果が生成されます
長さが指定されていない場合、デフォルトで 1K データが読み取られ、改行文字 (戻り値に含まれる)、EOF、または長さ - 1 バイトが読み取られた後に停止します
string fgetss ( resource handle [, int length [, string allowed_tags]] ) ファイルポインターから行を読み取り、HTML タグをフィルターで除外します
fgetc() は 1 文字を読み取ります
fread() はバイナリデータを読み取ります
/////////////////////////////コード部分////////////////// /// /////////////////////
$handle = fopen ("test.jpg", "rb");
$c;
while (!feof($handle)) {
$contents .= @fread($handle, 8192);// 読み取りをループして、大きなファイルにマージします
}
fclose($ハンドル);
//////////////////////////////////////////////// /// //////////////////////////
----------出力結果--------------- - ------------
-------------------------------------------------- ------------------
4. ファイルの読み取りステータスを確認します
各ファイル ハンドルには、fopen 関数のモード パラメーターに従って、次の操作がファイル内のどこで行われるかを示すファイル ポインター、またはカーソルがあります
ファイル ポインターは、最初はファイルの先頭 (0) またはファイルの末尾に配置されます
feof() はファイルが最後に到達したかどうかを判断できます (関数は最後に到達すると TRUE を返します)
filesize() 関数はファイルのサイズを返します 5. ファイルを書き込みます
fwrite()関数はファイル書き込みを実行します
/////////////////////////////コード部分////////////////// /// /////////////////////
$ファイル名 = 'test.txt';
$somec;
// まず、ファイルが存在し、書き込み可能であることを確認する必要があります。
// この例では、追加モードを使用して $filename を開きます
// したがって、ファイル ポインタはファイルの先頭になります
// fwrite() を使用するときに $somecontent が書き込まれる場所です。
if (!$handle = fopen($filename, 'a')) {
echo "ファイル $filename を開けません";
出る
}
// 開いたファイルに $somecontent を書き込みます。
if (fwrite($handle, $somecontent) === FALSE) {
echo "ファイル $filename に書き込めません";
出る
}
echo "$somecontent がファイル $filename に正常に書き込まれました";
fclose($ハンドル);
} その他 {
}
echo "ファイル $filename は書き込み可能ではありません";
//////////////////////////////////////////////// /// /////////////////////////
----------出力結果--------------- - ------------
これらのテキストがファイルに正常に追加され、ファイル test.txt に書き込まれました
-------------------------------------------------- ------------------
バイナリデータの場合、ディスクに書き込まれるデータバイト数を含む 3 番目のパラメータを指定する必要があります
$result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));
|
||
|