ホームページ >バックエンド開発 >PHPチュートリアル >PHP プログラミング: 一般的なファイル操作の紹介_PHP チュートリアル

PHP プログラミング: 一般的なファイル操作の紹介_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 10:57:34758ブラウズ

PHPローカルサーバー上のファイルやディレクトリを扱うのは非常に便利ですが、パーミッションやパス関連の問題が発生することがあります。

1. ファイルを開きます

<ol class="dp-c">
<li class="alt"><span><span>resource </span><span class="func">fopen</span><span> ( string filename, string mode [, bool use_include_path [, resource zcontext]] )  </span></span></li>
<li>
<span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span>(filename,mode)</span><span class="comment">//打开文件,返回代表此文件的资源的句柄</span><span> </span>
</li>
</ol>

バイナリファイルを操作する場合、ファイル名には相対パス、絶対パス、またはネットワークプロトコルモードを使用できます。 「b」フラグを指定しない場合、破損したイメージ ファイルや rn 文字に関する奇妙な問題など、いくつかの奇妙な問題が発生する可能性があります。

移植性の理由から、fopen() でファイルを開くときは常に「b」フラグを使用することを強くお勧めします。

ファイルを開く方法は次のとおりです

<ol class="dp-c">
<li class="alt"><span><span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">'log.txt'</span><span>,</span><span class="string">"rb"</span><span>);  </span></span></li>
<li>
<span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">'../log.txt'</span><span>,</span><span class="string">"rb"</span><span>);  </span>
</li>
<li class="alt">
<span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">"http://www.runer.com.cn/default.htm"</span><span>,</span><span class="string">"rb"</span><span>);</span>
</li>
<li class="alt"><span>//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项 </span></li>
</ol>

出力結果: ファイル userinfo.txt が正常に開かれました

2. ファイルを使用した後、それを PHP に明示的に伝える必要があります。ファイルが使用されている場合、ファイルのすべての内容がバッファからハードディスクに正しくフラッシュされるようにします

fclose() を使用してファイルを閉じます

<ol class="dp-c">
<li class="alt"><span><span class="vars">$filename1</span><span> = </span><span class="string">"userinfo.txt"</span><span>;</span><span class="comment">//目录下或include_path中存在这个文件 </span><span> </span></span></li>
<li>
<span class="vars">$filename2</span><span> = </span><span class="string">"test.txt"</span><span>;</span><span class="comment">//目录下或include_path并不存在这个文件 </span><span> </span>
</li>
<li class="alt">
<span class="vars">$resource1</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename1</span><span>,</span><span class="string">"rb"</span><span>);  </span>
</li>
<li>
<span>@</span><span class="vars">$resource2</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename2</span><span>,</span><span class="string">"rb"</span><span>);</span><span class="comment">//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息 </span><span> </span>
</li>
<li class="alt">
<span class="keyword">if</span><span>(</span><span class="vars">$resource1</span><span>)  </span>
</li>
<li>
<span class="func">echo</span><span> </span><span class="string">"打开文件{$filename1}成功"</span><span>;  </span>
</li>
<li class="alt">
<span class="keyword">if</span><span>(!@</span><span class="func">fopen</span><span>(</span><span class="vars">$filename2</span><span>,</span><span class="string">"r"</span><span>))  </span>
</li>
<li>
<span class="func">echo</span><span> </span><span class="string">"打开文件{$filename2}不成功"</span><span>; </span>
</li>
</ol>

3.ファイル、fopen 関数の mode パラメーターにより読み取りが可能になります。PHP には、ファイルからデータを読み取るための関数がいくつか用意されています

string fgets ( int handle [, int length] ) は、ファイル ポインターから行を読み取り、バイナリ ファイルで fgets を試行すると、予測できない結果を生成します

長さが指定されていない場合、デフォルトで 1K データを読み取り、改行文字 (戻り値に含まれる)、EOF または長さ - 1 バイトが読み取られた後に停止します

string fgetss (リソース ハンドル [, int length [ , string allowed_tags]] ) ファイル ポインタから 1 行を読み取り、HTML タグを除外します

fgetc() は 1 文字を読み取ります

fread() は任意のバイナリ データを読み取ります

コード部分:

<ol class="dp-c"><li class="alt"><span><span>bool fclose ( resource handle )</span><span class="comment">//关闭一个已打开的文件指针 </span><span> </span></span></li></ol>

4.ファイルの読み取りステータス

各ファイルハンドルにはファイルポインタ、または fopen 関数のモードパラメータに応じて次の操作がファイル内のどこで行われるかを示すカーソルがあります

ファイルポインタは最初は先頭に位置しますファイルの (0)、またはファイル

feof() の終わりは、ファイルが終わりに到達したかどうかを判断できます (関数は終わりに到達すると TRUE を返します)

filesize() 関数はファイルのサイズ 5 を返しますファイルを書き込みます

fwrite() 関数はファイルの書き込みを実行します

コード部分:

<ol class="dp-c">
<li class="alt"><span><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span> (</span><span class="string">"test.jpg"</span><span>, </span><span class="string">"rb"</span><span>);  </span></span></li>
<li>
<span class="vars">$c</span><span>;  </span>
</li>
<li class="alt">
<span class="keyword">while</span><span> (!</span><span class="func">feof</span><span>(</span><span class="vars">$handle</span><span>)) {  </span>
</li>
<li>
<span class="vars">$contents</span><span> .= @</span><span class="func">fread</span><span>(</span><span class="vars">$handle</span><span>, 8192);</span><span class="comment">//循环读取并将其合并为一个大块文件 </span><span> </span>
</li>
<li class="alt"><span>}  </span></li>
<li>
<span>fclose(</span><span class="vars">$handle</span><span>); </span>
</li>
</ol>

出力結果:

これらのテキストをファイルに正常に追加し、ファイル test.txt に書き込みます

バイナリ データの場合、 3 番目のパラメータは指定する必要があり、ディスク番号

<ol class="dp-c">
<li class="alt"><span><span class="vars">$filename</span><span> = </span><span class="string">'test.txt'</span><span>;  </span></span></li>
<li>
<span class="vars">$somec</span><span>;   </span>
</li>
<li class="alt">
<span class="comment">// 首先我们要确定文件存在并且可写。 </span><span> </span>
</li>
<li>
<span class="keyword">if</span><span> (</span><span class="func">is_writable</span><span>(</span><span class="vars">$filename</span><span>)) {  </span>
</li>
<li class="alt">
<span class="comment">// 在这个例子里,我们将使用添加模式打开$filename, </span><span> </span>
</li>
<li>
<span class="comment">// 因此,文件指针将会在文件的开头, </span><span> </span>
</li>
<li class="alt">
<span class="comment">// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。 </span><span> </span>
</li>
<li>
<span class="keyword">if</span><span> (!</span><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename</span><span>, </span><span class="string">'a'</span><span>)) {  </span>
</li>
<li class="alt">
<span class="func">echo</span><span> </span><span class="string">"不能打开文件 $filename"</span><span>;  </span>
</li>
<li>
<span class="func">exit</span><span>;  </span>
</li>
<li class="alt"><span>}  </span></li>
<li>
<span class="comment">// 将$somecontent写入到我们打开的文件中。 </span><span> </span>
</li>
<li class="alt">
<span class="keyword">if</span><span> (fwrite(</span><span class="vars">$handle</span><span>, </span><span class="vars">$somecontent</span><span>) === FALSE) {  </span>
</li>
<li>
<span class="func">echo</span><span> </span><span class="string">"不能写入到文件 $filename"</span><span>;  </span>
</li>
<li class="alt">
<span class="func">exit</span><span>;  </span>
</li>
<li><span>}  </span></li>
<li class="alt">
<span class="func">echo</span><span> </span><span class="string">"成功地将 $somecontent 写入到文件$filename"</span><span>;  </span>
</li>
<li>
<span>fclose(</span><span class="vars">$handle</span><span>);  </span>
</li>
<li class="alt">
<span>} </span><span class="keyword">else</span><span> {  </span>
</li>
<li><span>}  </span></li>
<li class="alt">
<span class="func">echo</span><span> </span><span class="string">"文件 $filename 不可写"</span><span>; </span>
</li>
</ol>

6 に書き込まれるデータバイトが含まれます

is_readable()//ファイルが読み取り可能かどうかを判断します is_writeable()/ /ファイルが書き込み可能かどうかを判定

    is_writable()//ファイルが読み取り可能かどうかを判定 Writable
  • fileperms()//ファイルのパーミッションを判定(UNIX風ファイルパーミッションテスト関数)
  • file_exists()//このファイルが存在するかどうか
  • fileowner()//ファイルが属するユーザーを判断する
  • filegroup()/ /ファイルが属するグループを決定する
  • 7. ファイルを削除して名前を変更する

リンクを解除()//ファイルを削除します rename()//ファイルの名前を変更します

  • 8. ディレクトリにアクセスします
ディレクトリアクセス WindowsおよびUNIXシステムと互換性のあるスラッシュ「/」を使用することをお勧めします

basename()//パス情報を除いたファイル名を返します

dirname()//ファイル名のディレクトリ部分を返します

    realpath()/ /相対パスを受け入れ、ファイルの絶対パスを返します
  • pathinfo( )//指定されたパスのディレクトリ名、ベースファイル名、拡張子を抽出します
  • opendir()//ディレクトリを開き、リソースハンドルを返します
  • readdir()// ディレクトリエントリを読み取ります
  • rewinddir()//Return先頭への読み取りポインター
  • closedir()//読み取りハンドルを閉じる
  • chdir()//現在のスクリプトの実行中に現在の作業ディレクトリを変更します
  • mkdir()/ / ディレクトリを作成します
  • rmdir()ディレクトリを削除します
  • 上記の内容が 8 つの一般的なファイル操作方法を紹介し、お役に立てば幸いです。

http://www.bkjia.com/PHPjc/445756.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/445756.html技術記事 PHP がローカル サーバー上のファイルやディレクトリを処理できるのは非常に便利ですが、アクセス許可やパスに関連した問題が発生することがあります。 1. ファイルリソース fopen (stringfilename,stringmode[,...) を開きます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。