PHPer 高手之路
  • Introduction
  • First Chapter
  • 基础
    • 数据类型和常量
    • 字符串
      • 字符编码
      • 字符编码相关编程
    • 引用变量
    • 运算符与错误控制符@
    • 流程控制与条件判断
      • foreach遍历中的引用
    • 函数
    • 文件及目录处理
  • PHP 数组
    • 基础
    • PHP数组操作
    • 输入流 php://input
    • PHP数组的内部实现
    • PHP数组和数据结构
    • 示例技巧
  • PHP文件编程
    • 文件系统
    • 基础
    • 实例技巧
    • PHP中XML处理
    • PHP中JSON处理
    • PHP中CSV处理
    • 大文件上传
  • 正则表达式
    • 基础
    • 正则的引擎
    • 表达式的优化
    • PHP中正则的使用
  • PHP 编码技巧
    • PHP编码习惯
    • PHP语法糖
    • PHP代码优化
    • PHP重点新特性
    • PHP编码规范
  • PHP选项和运行原理
    • PHP SAPI
    • PHP运行模式及安装方式
    • 附录:进程和线程的Q解
    • Apache下的MPM模式
    • Apache 与 Nginx
    • PHP的运行机制及原理
    • PHP垃圾回收机制
    • PHP配置选项
  • PHP安全
    • 跨站脚本攻击(XSS )
    • 跨站请求伪造(CRSF)
  • PHP 高级特性
    • 异常处理(Exceptions)
    • 代码复用(Trait)
    • 预定义接口(Predefined Interfaces)
    • 魔术方法(Magic Methods)
    • 回调函数、匿名函数&闭包
    • 命名空间(Namespaces)
    • 自动加载(Autoload)
    • 反射(Reflection)
    • 魔术常量(Magic constants)
    • 综合实例
  • 附录:关键词
  • 附录:资料
  • 代码的版本控制
    • SVN
    • Git
      • 疑难杂症
  • Linux
    • Linux原理与基础
    • 常见命令
    • Shell 编程
    • awk 与 sed
    • 命令笔记
  • HTTP 协议
    • 请求方法与返回状态码
    • Cookie、Session 的原理
  • MySQL
    • MySQL表存储引擎
  • 标准PHP库(SPL)
    • 数据结构
      • SplPriorityQueue - 优先队列
      • SplQueue - 队列
      • SplStack - 栈的功能
    • 接口
      • Countable - count统计接口
  • 附录:ElasticSearch
  • PHP数据结构
  • 附录:Rabbitmq
  • 附录:guzzle
  • JavaScript
    • 附录:资料
  • 疑难杂症
Powered by GitBook
On this page
  • 文本文件和二进制文件有什么不同?
  • 文件的打开方式
  • 与文件操作相关的封装协议

Was this helpful?

  1. PHP文件编程

基础

Previous文件系统Next实例技巧

Last updated 5 years ago

Was this helpful?

文本文件和二进制文件有什么不同?

  • 文本文件是基于字符编码的文件

  • 除了文本文件以外的文件称为二进制文件

  • 二进制文件编码是变长的,灵活利用率高

  • 两者读写差别仅体现在回车换行符的处理上

  • 文本文件是一种特殊的“二进制文件”

文件的打开方式

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

上面两句等同于

echo fgets(STDIN);

集合体

fputs(STDOUT, strtoupper(fgets(STDIN)));

获取输入, 并输出

更多请看