'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?
你先在1.txt里面任意写点内容,你再测试w和a就能看出区别了
简单说就是对于一个已经存在内容的文本文件,w是清空已有内容再写,a是在已有内容的基础上往后追加内容
对于一个全新的文本文件,两者是一样的
如果 1.txt 原来就是不存在或者内容为空,那么追加和重写的效果是一样的。
如果 1.txt 存在,并且有内容,效果是不同的。
a是追加,不覆盖。
w是直接覆盖。
a模式
是追加,这一句是重点,将文件指针指向文件末尾,如果原来文件存在,那么要写入的内容将添加到文件末尾,你那个例子,是创建新文件了,等同于w模式