PHP文件操作

来源:互联网 发布:南京智推数据是干嘛的 编辑:程序博客网 时间:2024/06/05 02:37

PHP文件编程

存储在某种设备中的一段数据流都可以称作为文件
文件类型:普通文件、链接文件、目录文件、设备文件
几个特殊的设备文件:

/dev/tty 终端/dev/null 就是Linux中的一个黑洞/dev/zero 可以得到无限多的0

inode包含的内容
1. 文件的字节数
2. 文件的uid和gid
3. 文件的读、写、执行权限
4. 文件的时间戳 ctime atime、mtime
5. 链接数:有多少文件名指向这个inode
6. 文件数据block的位置

ext文件系统的特点
ext3是一种日志式文件系统,最长文件名255字节,最大文件大小16G-64T(取决于块尺寸的大小)、最大的卷容量2T-32T,最大文件数可变

XFS也是日志式的文件系统,文件名最长255字节,最大文件大小 8exbibytes-1byte
最大卷容量16exbibytes centos7的默认文件系统

文本文件和二进制文件的不同?
1. 文本文件是基于字符编码的文件
2. 除了文本文件之外的文件都是二进制文件,二进制文件编码是变长的,灵活利用率高
3. 两者读写的差别仅体现在回车换行符的处理上,文本文件会忽略
4. 也就是文本文件其实是一种特殊的二进制文件

文件的打开方式

fopen($file,mode)

文件打开的特殊标记

t 可以将 \r 转换成 \r\n
b 强制文件打开方式为二进制模式

word文档的本质是一种压缩文件,里边的图片资源会被放到media目录下
.exe/.dll文件其实也是压缩文件

使用pack将文件写入二进制文件

exif_imagetype获取文件类型
feek文件指针中定位
ftell返回文件指针读写的位置
rewind倒回文件指针的位置
feof判断文件是否到了最后
uEditor是使用文件指针偏移加载文件内容 自带文本编辑器是一次性读取全部的文件内容到内存中

随机读写文件的应用:
  1. 分析读取特定的二进制文件内容,如纯真ip库、QQ本地消息,图片元数据信息等
  2. 创建特定的二进制文件,如pdf、word、chm等
  3. 对大文件进行切割,如视频切割器等
  4. 创建自定义的二进制文件,实现自己的独特需求,eg 设计自己的数据文件
PHP中XML处理

DOM一次性将内容读入内存中,内存问题需要注意
SimpleXML小文件可以选择,但是不支持命名空间
XMLReader 边读边操作,拉取模型
XMLParse 推送模型

PHP中json的处理
json_encode目前只能处理utf8编码的数据
json_unescaped_unicode让json中的中文直接显示,而不是encode后的编码显示
json_last_error()可以查看json解析失败返回的错误码
json_last_error_msg()可以查看json解析失败返回的错误

CSV文件处理

fputcsv写入csv格式的内容,默认分隔符是,
fgetcsv读取csv格式的内容

fopen支持的协议

file://http://ftp://php://  php://stdin | stdout | stderr可以直接使用常量STDIN | STDOUT替代zlib://data://glob:// 查找匹配的文件路径模式phar:// php归档ssh2:// Secure Shell2rar:// RARogg:// 音频流expect:// 处理交互式的流

如何实现超大文件上传?(不断的读取本地文件,然后拼装在一起)
1. 客户端控件、需要本地安装指定控件
2. 采用swfUpload、uploadify等flash组件
3. 使用XMLHttpRequest2.0实现

XMLHttpRequest2.0的新特性:1. 可以上传文件2. 可以设置http请求超时时间3. 可以使用formData对象管理表单数据4. 可以跨域请求5. 可以获取服务端的二进制数据6. 可以获得数据传输的进度信息
0 0
原创粉丝点击