文本文件和二进制文件有什么不同?
文件的打开方式
$handle = fopen( 'test.txt', 'r' );
文件的打开方式的特殊标记
1、标记(‘t’)可以将 \n 转换为 \r\n (windows下)
$handle = fopen('test.txt', 'wt');
2、标记 (‘b’) 来强制使用二进制模式
$handle = fopen('test.txt', 'rb');
示例:
r
只读方式打开
$handle = fopen("import.txt", "r");
echo fputs($handle ,'是否能写入?');
输出0,无法写入
r+
读写方式打开
$handle = fopen("import.txt", "r+");
echo fputs($handle ,'是否能写入?');
注意:指针指向文件开头,所以如果文件中已经存在数据,则添加的数据会在文件开头.
w 写入方式打开
$handle = fopen("import.txt", "w");
$content=fgets($handle);
var_dump($content);
因为只能写入,所以读取不成功,返回fasle
注意:原有的文件数据会被清空
w+读写方式打开
$handle = fopen("import.txt", "w+");
fputs($handle, '我写写!');
rewind($handle); //倒回文件指针的位置
$content=fgets($handle);
var_dump($content);
注意:原有的文件数据会被清空
x写方式打开
//文件不能先存在,否则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息
$handle = fopen("write.txt", "x");
var_dump($handle);
c写入方式打开
<?php
//覆盖模式,不会清空已有的文件。
$handle = fopen("write.txt", "c");
fputs($handle, "1");
fseek($handle, 3);
fputs($handle, '2');
与文件操作相关的封装协议
fopen('php//stdout', 'w');
或者
file:// - 访问本地文件系统
http::// - 访问HTTP(s) 网址.
ftp:// 访问FTP(s) URLs
php:// - 访问各个输入/ 输出流(I/O streams)
zlib:// - 压缩流 :http://php.net/manual/zh/wrappers.compression.php
更多请看
命令行输出流
$fp = fopen('php://stdout', 'w');
fputs($fp, 'hello world!');
等同于
fputs(STDOUT, 'hello world!');
相当于echo
命令行输入流
$fp = fopen('php://stdin', 'r');
echo fgets($fp);
上面两句等同于
集合体
fputs(STDOUT, strtoupper(fgets(STDIN)));
获取输入, 并输出