搜索

首页  >  问答  >  正文

php - fopen w和a的区别

'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

看这两个写入方式是不一样的 但是 我这边测试的结果怎么是一样的呢?
代码如下:

<?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);
?>

读取a文件夹里的文件 然后写入到文本里 这里fopen是w或者a怎么结果是一样的呢

曾经蜡笔没有小新曾经蜡笔没有小新2770 天前1089

全部回复(4)我来回复

  • 大家讲道理

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

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

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

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

    回复
    0
  • 大家讲道理

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

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

    回复
    0
  • 给我你的怀抱

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

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

    回复
    0
  • 某草草

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

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

    回复
    0
  • 取消回复