Heim  >  Fragen und Antworten  >  Hauptteil

Unterschied zwischen fopen w und a

'w' aktiviert den Schreibmodus, zeigt den Dateizeiger auf den Dateiheader und kürzt die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'a' öffnet sich im Schreibmodus und zeigt den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.

Es scheint, dass diese beiden Schreibmethoden unterschiedlich sind. Aber wie kommt es, dass die Ergebnisse meines Tests gleich sind?
Der Code lautet wie folgt:

<?php
$dir = "./a/";
$txt = '1.txt';
$fh = fopen($txt, 'w');
$dh = opendir($dir);
while (($file = readdir($dh)) !== false) {
    
    if ($file == '.' || $file == '..') {
        continue;
    }
    
    fwrite($fh, $file."\n");
}

closedir($dh);
?>

Lesen Sie die Dateien im Ordner a und schreiben Sie sie in Text. Wenn fopen w oder a ist, warum ist das Ergebnis dasselbe?

曾经蜡笔没有小新曾经蜡笔没有小新2687 Tage vor1018

Antworte allen(4)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-05-24 11:32:31

    你先在1.txt里面任意写点内容,你再测试w和a就能看出区别了

    简单说就是对于一个已经存在内容的文本文件,w是清空已有内容再写,a是在已有内容的基础上往后追加内容

    对于一个全新的文本文件,两者是一样的

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-05-24 11:32:31

    如果 1.txt 原来就是不存在或者内容为空,那么追加和重写的效果是一样的。
    如果 1.txt 存在,并且有内容,效果是不同的。

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-24 11:32:31

    a是追加,不覆盖。
    w是直接覆盖。

    Antwort
    0
  • 某草草

    某草草2017-05-24 11:32:31

    a模式是追加,这一句是重点,将文件指针指向文件末尾,如果原来文件存在,那么要写入的内容将添加到文件末尾,你那个例子,是创建新文件了,等同于w模式

    Antwort
    0
  • StornierenAntwort