老生常谈PHP 文件写入和读取(必看篇)(2)
发布时间:2021-01-17 14:01 所属栏目:121 来源:网络整理
导读:采用w+模式写入文本“w+ mode” 基于”I am initialized value”的初始文本我们运行以下代码: 运行后,我们发现”I am initialized value”已经被删除了,然后才加上了“w+ mode”这段新文本 【注意】r+,a+,w+还有
•采用w+模式写入文本“w+ mode”基于”I am initialized value”的初始文本我们运行以下代码:
运行后,我们发现”I am initialized value”已经被删除了,然后才加上了“w+ mode”这段新文本
【注意】r+,a+,w+还有一个区别是a+,w+在文件不存在时则创建文件,r+文件不存在时报错
【吐槽】:关于r+和w+,a+的区别,我找了网络上,包括W3C和各种博客文章以及那本“PHP圣经”上的各种资料,发现都是一笔带过去的,这也是我写这篇文章的原因
三.文件读取和文件写入操作先说说几个比较重要的函数: •file_exists():判断文件是否存在,返回布尔值 •filesize():判断一个文件大小,返回文件的字节数,为整型数字 •unlink():删除一个文件写入文件fwrite(资源文件对象[string],写入方式[string]),资源文件对象即为fopen方法返回的参数,为Resource类型,写入方式可以是w(或者w+,r+) 已经有上面的例子,这里就不放demo了读取文件这是我们要读取的文件内容:读取文件的方式有以下几种:1.一次读取一个字节的数据 fgetc()2.一次读取指定的字节数的数据 fread()3.一次读取一行数据 fgets()/fgetcsv()4.一次读完全部数据fpassthru()/ file()1. 一次读取一个字节 —— 通过fgetc()获取单个字节
运行:
【注意】:无论是按文本格式输入输出还是按二进制格式输出,fgetc()每次获取的是一个 字节而不是一个字符! 上面的例子中我们是逐个输出,现在让我们只做一次输出,看看结果怎样:
运行结果如下,我们得到的不是汉字“我”,而是一个乱码,其实这个乱码就是一个字节
2.一次读取多个字节 ——通过fread()方法:
运行结果:
改成: 运行结果如下,输出了6个字节也即两个汉字字符(UTF-8)3.一次读取一行——通过fgets()获取一行内容";//输出获取到的一行文本 } } fclose($fp);//关闭文件 ?> fgets()其实还有第二个参数,这个参数规定了每一行能读取的最大字节数(注意是字节数不是字符数): 【注意】在UTF-8编码下汉字3字节,字母1字节 下面我修改上面的一行,代码,使获取的每一行最大字符数为3(也即字节数为9) Demo: 【注意】:这里我fgets()里第二个参数为10,为什么是10呢?因为 1.这里的长度是按字节数算的 2.一个汉字占3个字节。fgets($fp,10)代表一次最多读取10 - 1 = 9字节4.一次读完全部文件 ——fpassthru() or file()?
|
相关内容
网友评论
推荐文章
热点阅读