创建文件我们用到函数
1 | 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!"的数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?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 代码所在的相同目录中:
实例
1 | $myfile = fopen ( "testfile.txt" , "w" ) |
PHP 文件权限
如果您试图运行这段代码时发生错误,请检查您是否有向硬盘写入信息的 PHP 文件访问权限。
PHP 写入文件 – fwrite()
fwrite()
函数用于写入文件。
fwrite()
的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
下面的例子把姓名写入名为 "newfile.txt" 的新文件中:
实例
1 2 3 4 5 6 7 8 | <?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",并向其中写入了一些新数据:
实例
1 2 3 4 5 6 7 8 | <?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。
语法:
1 | 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是一组选项,可以通过它修改文本属性 |
例子:
1 2 3 | <?php echo file_put_contents ( "test.txt" , "This is something." ); ?> |
运行该例子,浏览器输出:
18
而 test.txt 文件(与程序同目录下)内容则为:This is something.。
提示
如果文件不存在,则创建文件,相当于fopen()
函数行为。
如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免(见下)。
本函数可安全用于二进制对象。
以追加形式写入内容
当设置 flags 参数值为 FILE_APPEND 时,表示在已有文件内容后面追加内容的方式写入新数据:
1 2 3 | <?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()
功能一样。