基本知识:

PHP文件系统是基于Unix系统的
文件数据基本类型:二进制数据、文本数据
文件输入流:数据从源文件到内存的流动
文件输出流:数据从内存保存到文件的流动

文件操作函数:

》》》读《《《

==>获取文件流
fopen(文件相对路径/绝对路径,[文件打开模式]);    成功返回文件流,否则返回false
    [文件打开模式]六种常用打开方式:

r    只读方式打开    指针在文件头
    r+    读写方式打开    指针在文件头

a    写入方式打开[追加]    指针在文件尾
    a+    读写方式打开[追加]    指针在文件尾

w    写入方式打开[创建或清空]    指针在文件头
    w+    读写方式打开[创建或清空]    指针在文件头

b     只限于windows,二进制模式,附加在其他模式的上,例如”xb”
    t     只限于windows,附加在其他模式上,,将所有行的结束符转换成\r\n

==>根据文件流获取文件信息
fstat(文件流);    返回文件信息
返回的数组部分信息:
['size']:文件大小
['atime']:最后访问时间   返回的是Unix时间戳 转换date('Y-m-d H:i:s',$fileStream['mtime']);
['mtime']:最后修改时间
['ctime']:最后改变时间(相当于创建时间,只要所有者或用户组没有变化)

==>关闭文件
fclose($fileStream);

==>根据路径获取文件信息(方法二):可以不用打开文件就可以获取文件信息
filesize($filePath);
fileatime($filePath);
filemtime($filePath);
filectime($filePath);

==>判断文件是否存在
file_exists($filePath);

==>读取文件内容(方法一)
$fileData = fread($fileStream,filesize($filePath));
注意:
文本文件读取到网页上显示时,由于换行符不被解释,文本不换行显示,
解决办法:将\r\n替换为<br/>[str_replace('\r\n','<br/>',$fileData);]

==>读取文件内容(方法二)
file_get_contents($filePath); 将整个文件读取到一个字符串(内部自动关闭文件流)

==>读取文件内容(方法三) 循环读取,用于读取大文件
循环读取指定字节大小的文件数据
feof($fileStream):判断文件指针是否在文件未尾,是返回true,否则返回false
while(!feof($fileStream)){
    $fileData = fread($fileStream,1024);
    echo $fileData;
}

应用扩展:
编写配置文本文件 db.ini
内容:
    host=172.0.0.1
    uid=root
    pwd=1314
    dbname=test
parse_ini_file('db.ini'); 根据‘=’分隔后的一个数组

======================================

fopen('htttp://demo.php/','r');
可以读取远程文件,但只限于只读模式
成功返回文件流,否则返回false

fread($handle,$len);            读取文件的len个字符长度可
stream_get_contents($handle);     读取文件所有内容

fwrite(fileStream,rContent,[length])
Note: 在区分二进制文件和文本文件的系统上(如 Windows) 打开文件时,fopen() 函数的 mode 参数要加上 'b'。
成功返回写入的字符数,出现错误时则返回 FALSE 。

fclose(fileStream)

例:
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize ($filename));
fclose($handle);

ftruncate($hanle,$len); 截取文件内容

》》》写《《《

==>写入文件(方法一)
$fileStream = fopen(filePath,"a+"); 给文件末尾追加内容用a+
fwrite($fileStream,"要写入的内容");  返回写入的字符数,出现错误时则返回 FALSE 。

==>写入文件(方法二)
file_put_contents($filePath,"要写入的内容",FILE_APPEND);
内部会自动关闭文件流,FILE_APPEND以追加方式添加,如果没有则默认是对内容清空再写入
如果是循环写入,效率没有第一种高

》》》拷贝《《《
copy(源路径,结果路径);
注意:中文的编码转换 iconv('utf-8','gb2312',$filePath);

PHP文件操作 读取与写入的更多相关文章

  1. Java I/O---RandomAccessFile类(随机访问文件的读取和写入)

    1.JDK API中RandomAccessFile类的描述 此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引 ...

  2. C#的XML文件的读取与写入

    在设计程序的时候,对于一些变化性较强的数据,可以保存在XML文件中,以方便用户修改.尤其是对于一些软硬件的配置文件,很多都选择了用XML文件来存取.XML文件简单易用,而且可以在任何应用程序中读写数据 ...

  3. c# txt文件的读取和写入

    我们在工程实践中经常要处理传感器采集的数据,有时候要把这些数据记录下来,有时候也需要把记录下来的数据读取到项目中.接下来我们用C#演示如何对txt文件进行读写操作.我们要用到StreamReader  ...

  4. Properties类对于文件的读取和写入

    Properties类表示一个持久的属性集.Properties可保存在流中或从流中加载.Properties对象只能加载以 .Properties 为后缀的文件(文件我创建在src下). 开始时文件 ...

  5. c++学习笔记—c++对txt文件的读取与写入

    一.文件的输入输出 头文件fstream定义了三个类型支持文件IO:ifstream从给定文件读取数据.ofstream向一个给定文件写入数据.fstream读写给定数据.这些类型与cin和cout的 ...

  6. POI Excel文件的读取与写入

    1. 创建目录 if(!(new File(path).isDirectory())){ new File(path).mkdirs();} 2. 读取Excel文件,并进行写入操作 Workbook ...

  7. Python 文件的读取与写入

    1. 读取文件,文件中没有中文 备注 : 文件名 : EnglishFile.txt 文件位置 : 保存在所写的.py文件的同级目录,附上截图,便于参考 备注 : 文件位置可以改变,只需要把文件路径传 ...

  8. java中文件的读取和写入

    //首先要顶一个file文件用来存放要读取的文件 File f=new File("c:/test/aa.txt"); //在实例化一个输入流,并把文件对象传到里面 FileInp ...

  9. java 文件操作 读取字节级数据(读取)

    package com.swust; import java.io.*; /* * 功能:按照双精度浮点型.整型.布尔型.字符型.和字符串型的顺序从名为sample.dat文件读取数据 * 分析:用F ...

随机推荐

  1. RNN 入门教程 Part 4 – 实现 RNN-LSTM 和 GRU 模型

    转载 - Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano ...

  2. Android应用程序消息处理机制

    http://download.csdn.net/detail/luoshengyang/6439647 pdf

  3. range和xrange梳理

    一.python2.7 range 用户获取指定范围内的数,range([start,] stop[, step]) >>> range(1,5) #代表从1到5(不包含5) [1, ...

  4. c中三大区的解析

    1.栈,堆和静态存储区是 堆和静态存储区是C语言程序常涉及的三个基本内语言程序常涉及的三个基本内存区2.栈区主要用于函数调用的使用3.堆区主要是用于内存的动态申请和归还4.静态存储区用于保存全局变量和 ...

  5. token生成过程

    客户端登录会拿到token,然后去登录游戏服务器 了解GUID 可以了解http://blog.sina.com.cn/s/blog_5c8d13830100gku3.html // obviousl ...

  6. 在Nginx服务器中设置多个站点

    这里以配置1个站点(1个域名)为例,n 个站点可以相应增加调整, 假设:IP地址: 127.0.0.1域名1 phpmyadmin.zhengwen.cn 放在 /www/phpmyadmin.zhe ...

  7. 升级10.11.6后CocoaPods的坑,之前10.11.4已经安装好的,居然没了Failed to locate Homebrew!

    升级10.11.6后CocoaPods的坑,之前10.11.4已经安装好的,居然没了,用命令 sudo gem install cocoapod 装不上,换 sudo gem install -n/u ...

  8. CentOS安装oracle12C

    安装虚拟系统CentOS6.5,分配给至少1G的内存,其他条件适当高些,具体参考官方文档 一.安装数据库: 1.安装依赖软件包 yum install binutils -y yum install ...

  9. java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别

    java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别   以前一直没有注意过这个问题,前两天机缘巧合上网查了一下,然后自 ...

  10. javascript Date 总结

    构造函数 Date 对象的构造函数有以下4种: (1)var variable = new Date(); (2)var variable = new Date(millisenconds); (3) ...