PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解


Posted in PHP onFebruary 15, 2019

本文实例讲述了PHP创建文件及写入数据(覆盖写入,追加写入)的方法。分享给大家供大家参考,具体如下:

这里主要介绍了PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码,需要的朋友可以参考下:

创建文件我们用到函数

fopen ( string filename, string mode )

参数:

filename:创建文件名

mode:以什么方式打开文件filename

其中mode可能值列表:

mode 说明
‘r' 只读方式打开,将文件指针指向文件头。
‘r+' 读写方式打开,将文件指针指向文件头。
‘w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
‘x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

下面代码是我通过利用函数fopen创建一个名为Demo,格式为txt的文件,并在文件中写入"Welcome To ItCodeWorld!"的数据。

<?php
//要创建的两个文件
$TxtFileName = "Demo.txt";
//以读写方式打写指定文件,如果文件不存则创建
if( ($TxtRes=fopen ($TxtFileName,"w+")) === FALSE){
echo("创建可写文件:".$TxtFileName."失败");
exit();
}
echo ("创建可写文件".$TxtFileName."成功!</br>");
$StrConents = "Welcome To ItCodeWorld!";//要 写进文件的内容
if(!fwrite ($TxtRes,$StrConents)){ //将信息写入文件
echo ("尝试向文件".$TxtFileName."写入".$StrConents."失败!");
fclose($TxtRes);
exit();
}
echo ("尝试向文件".$TxtFileName."写入".$StrConents."成功!");
fclose ($TxtRes); //关闭指针
?>

PHP 创建文件 ? fopen()

fopen() 函数也用于创建文件。也许有点混乱,但是在 PHP 中,创建文件所用的函数与打开文件的相同。

如果您用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)。

下面的例子创建名为 "testfile.txt" 的新文件。此文件将被创建于 PHP 代码所在的相同目录中:

实例

$myfile = fopen("testfile.txt", "w")

PHP 文件权限

如果您试图运行这段代码时发生错误,请检查您是否有向硬盘写入信息的 PHP 文件访问权限。

PHP 写入文件 ? fwrite()

fwrite() 函数用于写入文件。

fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。

下面的例子把姓名写入名为 "newfile.txt" 的新文件中:

实例

<?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Bill Gates\n";
fwrite($myfile, $txt);
$txt = "Steve Jobs\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

请注意,我们向文件 "newfile.txt" 写了两次。在每次我们向文件写入时,在我们发送的字符串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在写入完成后,我们使用 fclose() 函数来关闭文件。

如果我们打开 "newfile.txt" 文件,它应该是这样的:

Bill Gates
Steve Jobs

PHP 覆盖(Overwriting)

如果现在 "newfile.txt" 包含了一些数据,我们可以展示在写入已有文件时发生的的事情。所有已存在的数据会被擦除并以一个新文件开始。

在下面的例子中,我们打开一个已存在的文件 "newfile.txt",并向其中写入了一些新数据:

实例

<?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Mickey Mouse\n";
fwrite($myfile, $txt);
$txt = "Minnie Mouse\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

如果现在我们打开这个 “newfile.txt” 文件,Bill 和 Steve 都已消失,只剩下我们刚写入的数据:

Mickey Mouse
Minnie Mouse

换行符‘\n'和回车符‘\r'

顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符

‘\n' 10 换行(newline)
‘\r' 13 回车(return)

也可以表示为'\x0a'和'\x0d'.(16进制)

在windows系统下,回车换行符号是”\r\n”.但是在Linux等系统下是没有”\r”符号的。

在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定”\r\n”又要判定”\n”。

写程序时可能得到一行,将其进行trim掉'\r',这样能得到你所需要的string了。

PHP file_put_contents() 函数

PHP file_put_contents() 函数是一次性向文件写入字符串或追加字符串内容的最合适选择。

file_put_contents() 函数用于把字符串写入文件,成功返回写入到文件内数据的字节数,失败则返回 FALSE。

语法:

int file_put_contents ( string filename, string data [, int flags [, resource context]] )

参数说明:

参数 说明
filename 要写入数据的文件名
data 要写入的数据。类型可以是 string,array(但不能为多维数组),或者是 stream 资源
flags 可选,规定如何打开/写入文件。可能的值: 1. FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径 2. FILE_APPEND:在文件末尾以追加的方式写入数据 3. LOCK_EX:对文件上锁
context 可选,Context是一组选项,可以通过它修改文本属性

例子:

<?php
echo file_put_contents("test.txt", "This is something.");
?>

运行该例子,浏览器输出:

18

而 test.txt 文件(与程序同目录下)内容则为:This is something.。

提示

如果文件不存在,则创建文件,相当于fopen()函数行为。
如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免(见下)。
本函数可安全用于二进制对象。

以追加形式写入内容

当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据:

<?php
file_put_contents("test.txt", "This is another something.", FILE_APPEND);
?>

执行程序后,test.txt 文件内容变为:

This is something.This is another something.

file_put_contents() 的行为实际上等于依次调用 fopen()fwrite() 以及 fclose() 功能一样。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
百度地图API使用方法详解
Aug 25 PHP
Symfony2之session与cookie用法小结
Mar 18 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
Yii2框架自定义类统一处理url操作示例
May 25 PHP
PHP dirname功能及原理实例解析
Oct 28 PHP
PHP fopen函数用法实例讲解
Feb 15 #PHP
PHP fclose函数用法总结
Feb 15 #PHP
PHP filesize函数用法浅析
Feb 15 #PHP
PHP数组遍历的几种常见方式总结
Feb 15 #PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 #PHP
PHP crypt()函数的用法讲解
Feb 15 #PHP
phpinfo无法显示的原因及解决办法
Feb 15 #PHP
You might like
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python urlopen()函数 示例分享
2014/06/12 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python实现的彩票机选器实例
2015/06/17 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
小学教师岗位职责
2013/11/25 职场文书
中学自我评价
2014/01/31 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
个人贷款收入证明
2014/10/26 职场文书
2014年村委会工作总结
2014/11/24 职场文书
思想道德自我评价2015
2015/03/09 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android