検索

ホームページ  >  に質問  >  本文

php - 同じファイルを操作する fwrite と fread について

リーリー

このコードを実行すると、2 つの helloworld がファイルに書き込まれます。これはなぜですか?
そしてこの一節を理解する方法:

更新モードでは、同じファイルの読み取りと書き込みが許可されます。モードの最初の後に b が含まれる場合、fflush または
ファイル配置関数を読み取りと書き込みの間に呼び出す必要があります。
"rb" または "w b" のような文字。ファイル名は最大で
FILENAME_MAX 文字に制限されます。 FOPEN_MAX ファイルを一度に開くことができます。

怪我咯怪我咯2808日前1895

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑2017-05-16 12:04:35

    fopen的第二个参数为模式, 有r, w, b, a等模式, 其中a表示append, 也就是附加的意思, 打开时不会清空文件(把EOF指向0), 而是把文件指针指向文件末尾. 所以这个时候如果直接写的话不会覆盖原有的内容. 通过rewind 関数は、ファイル ポインターを開始点にポイントします。例:

    を書き込むと、元のコンテンツが上書きされます。 リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-05-16 12:04:35

    理由は 2 つあります。追加モードにあり、最後の helloworld をクリアしていないため、前回と現在の時刻の両方が存在します

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-16 12:04:35

    fopen("./log", "a+"); この文は、読み取りおよび書き込み可能なファイルを追加形式で開くことを意味し、ファイルが存在する場合、元の内容は保持され、データは末尾に追加されます。ファイルの。

    このとき、$fpファイルポインタは操作対象ファイルの末尾を指します
    fwrite($fp, '12345');

    このとき、fread($fp, 10)を直接出力すると空文字列になってしまいます。これは、長さを指定すると、$fpファイルポインタがファイルの末尾を指しているためです。間違いなく空になります。
    そして、ファイル ポインターの位置を巻き戻すために rewind($fp); を追加すると、$fp ポインターがファイルの先頭を指していることがわかり、fread($fp, 10) を出力すると結果が生成されます。

    しかし、ログを開くと、毎回ファイルの末尾に追加されます。

    返事
    0
  • キャンセル返事