ホームページ >バックエンド開発 >PHPチュートリアル >PHPファイルの読み書き操作の学習

PHPファイルの読み書き操作の学習

WBOY
WBOYオリジナル
2016-07-25 08:51:36958ブラウズ
  1. // !== 演算子は 4.0.0-RC2 より前には存在しないことに注意してください

  2. if ($handle = opendir(' /path/to/files')) {

  3. echo "ディレクトリ ハンドル: $handlen";
  4. echo "Files:n";

  5. while (false !== ($file = readdir) ($handle))) {
  6. echo "$filen";
  7. }
  8. while ($file = readdir($handle)) {
  9. echo "$filen";
  10. }

  11. $handle);

  12. }
  13. ?>

コードをコピー

ファイルを読み取る:

  1. $file_name = "data.dat";
  2. // 読み込むファイルの絶対パス: homedata.dat
  3. $file_pointer = fopen($file_name, "r"); // ファイルを開きます。 8. "r" はモードです。 9. または実行したい操作メソッドです。 10. 詳細については、この記事の後半の紹介を参照してください
  4. $file_read = fread($file_pointer, filesize($file_name) ));
  5. // ファイルポインターを介してファイルの内容を読み取ります
  6. fclose($file_pointer);
  7. // ファイルを閉じます
  8. print "読み取られたファイルの内容は次のとおりです: $file_read"
  9. // ファイルの内容を表示します
  10. ?> ;
コードをコピー
ファイルを書き込みます:

$file_name = "data.dat";
  • // 絶対パス: homedata.dat
  • $file_pointer = fopen($file_name, "w")
  • // "w" はA モード、8. 詳細は後述します
  • fwrite($file_pointer, "what you want to write");
  • // 最初にファイル 12. を 0 バイトにカットし、13. 次に書き込みます
  • fclose($file_pointer)
  • // 終了
  • print "データはファイルに正常に書き込まれました"
  • ?>
  • コードをコピーして
  • 、ファイルの末尾に追加します。

    $file_name = "data.dat";

  • // 絶対パス: homedata.dat

  • $file_pointer = fopen($file_name , "a");

  • // "w" モード
  • fwrite($file_pointer, "what you wanna append");
  • // いいえ 11. ファイル 12. を 0 バイトに切り取り、13. データを At theファイルの終わり
  • fclose($file_pointer);
  • // End
  • print "データはファイルに正常に追加されました"
  • 上記は単なるコードです簡単に紹介しますが、以下ではより深い内容について説明します。
  • 複数の人が書き込みを行う場合があり (トラフィックの多い Web サイトで最も一般的です)、その結果、次のような無駄なデータがファイルに書き込まれます。
  • info.file ファイルの内容は次のとおりです ->
  • |1|ムクル|15|男性|インド (n) |2|ライナス|31|男性|フィンランド (n) 2 人が同時に登録すると、ファイルが破損します->

    info.file ->

    |1|ムクル|15|男性|インド |2|ライナス|31|男性|フィンランド |3|ロブ|27|男性|アメリカ| ビル|29|男性|アメリカ

    上記の例では、PHP が Rob の情報をファイルに書き込むときに、Bill がたまたま書き込みを開始し、Rob のレコードの「n」を書き込む必要があり、ファイルが破損します。

    これは絶対に起こってほしくないので、ファイルのロックを見てみましょう:

    $file_name = "data.dat";

    $file_pointer = fopen($file_name, "r");

    $lock = flock($file_pointer, LOCK_SH); 4.0.2、9 を使用します。したがって、LOCK_SH、10 を使用します。1 として直接記述する必要がある場合があります。

    if ($lock) {

    $file_read = fread($file_pointer, filesize($file_name));

    $lock = flock ($ file_pointer, LOCK_UN);

    // バージョンが PHP4.0.2 未満の場合、17. LOCK_UN を 3 に置き換えます。
    fclose($file_pointer)
    print "ファイルの内容は $file_read";
    1. コードをコピー
    2. 上記の例では、read.php と read2.php の 2 つのファイルが両方ともファイルにアクセスする必要がある場合、どちらもファイルを読み取ることができますが、プログラムが書き込む必要がある場合は待機する必要があります。読み取り操作が完了するまで、ファイルは解放されます。
    3. $file_name = "data.dat";
    4. $file_pointer = fopen($file_name, "w");
    5. // ifバージョンは PHP4.0.2, 9 より下です。 LOCK_EX の代わりに 2 を使用します
    6. if ($lock) {
    7. fwrite($file_pointer, "what u wanna write")
    flock($file_pointer, LOCK_UN); // Ifバージョンは PHP4.0.2、16 より低いです。 LOCK_UN の代わりに 3 を使用します。
    fclose($file_pointer) print "データはファイルに正常に書き込まれました"

    ;コードをコピー

    「w」モードはファイルを上書きするために使用されますが、それは適用できないと思います。

    1. $file_name = "data.dat";
    2. $file_pointer = fopen($file_name, "a");
    3. $lock = flock($file_pointer, LOCK_EX) ;
    4. // バージョンが PHP4.0.2 より前の場合、9. LOCK_EX

      の代わりに 2 を使用します if ($lock) {
    5. fseek($file_pointer, 0, SEEK_END);バージョンが PHP4.0RC1 より低い場合は、15. fseek($file_pointer, filsize($file_name));

    6. fwrite($file_pointer, "what u wanna write"); を使用します。 ($file_pointer, LOCK_UN) ;

    7. // バージョンが PHP4.0.2 より低い場合は、LOCK_UN の代わりに 3 を使用します
    8. }
    9. fclose($file_pointer)
    10. print "データはファイルに正常に書き込まれました"; >

    11. コードをコピーします
    うーん...、データの追加は他の操作とは少し異なります。それが FSEEK です。ファイル ポインターが次の位置にあることを常に確認するのが良い習慣です。ファイルの終わり。
    Windows システムの場合、上記のファイルの前に '' を付ける必要があります。
    群れのトーク:

    Flock() は、ファイルが開かれた後にのみファイルをロックします。 上記の列では、ファイルは開かれた後にロックされますが、ファイルの内容はその時点の内容のみであり、他のプログラム操作の結果は反映されません。そのため、fseek はファイルの追加だけに使用する必要はありません。操作だけでなく、読み取り操作も可能です。 (ここでの翻訳は正確ではないかもしれませんが、アイデアは理解できると思います)。

    パターンについて: 'r' - ファイルポインタをファイルの先頭に置き、読み取り専用で開きます。 'r+' - 読み取りと書き込みのために開き、ファイル ポインタをファイルの先頭に置きます。 'w' - 書き込み専用に開きます。ファイル ポインターはファイルの先頭に配置され、ファイルは 0 バイトにカットされます。ファイルが存在しない場合は、ファイルの作成を試みます。 'w+' - 読み取りおよび書き込み用に開きます。ファイル ポインターはファイルの先頭に配置され、ファイル サイズは 0 バイトにカットされます。ファイルが存在しない場合は、ファイルの作成を試みます。 'a' - 書き込み専用に開きます。ファイル ポインタはファイルの末尾に配置されます。ファイルが存在しない場合は、ファイルの作成を試みます。 'a+' - 読み取りと書き込みのためにオープンされ、ファイルポインターはファイルの末尾に配置されます。ファイルが存在しない場合は、ファイルの作成を試みます

    ちなみにファイルディレクトリを作成するコードは

    //「../../../xxx/xxx.txt」のようなディレクトリを作成します

    function createdirs($path, $mode = 0777) //mode 077
      {
    1. $dirs =explode('/',$path);
    2. $pos = strrpos($path, ".");
    3. if ($pos === false) { // 注: 3 つの等号
    4. / / 見つかりません。パスがファイルではないディレクトリで終わっていることを意味します
    5. $submount=0;
    6. }
    7. $subamount=1}

    8. for ($c=0;$c < ; count($dirs) - $submount; $c++) {

    9. $thispath=""; $cc=0; $cc $thispath.=$dirs[ $ cc].'/';
    10. }
    11. if (!file_exists($thispath)) {
    12. //print "$thispath
    13. "; //mkdir 関数はディレクトリを作成します
    14. }
    15. }
    16. }
    17. //createdirs("xxx/xxxx/xxxx",);

    18. //元の関数は $GLOBALS["dirseparator"] を使用していましたが、' に変更しました/'< ;/p>

    19. function recur_mkdirs($path, $mode = 0777) //mode 0777

    20. {
    21. //$GLOBALS["dirseparator"]
    22. $dirs =explode($GLOBALS["dirseparator "], $path);
    23. $pos = strrpos($path, ".");
    24. if ($pos === false) { // 注: 3 つの等号
    25. // 見つからない場合は、パスがdir not file
    26. $subamount=0;
    27. }
    28. else {
    29. $subamount=1;
    30. }
    31. 上記の記事は初心者向けの参考資料であり、専門家は合格できますそれによって。
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。