基本知识:

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. POJ2456 Aggressive cows

    Aggressive cows 二分,关键是转化为二分! #include <cstdio> #include <algorithm> ; ; int N, C; int a[ ...

  2. Myeclipse 加载ojdbc14.jar步骤

    目的:加载驱动程序,需要找到驱动的具体位置,就是找到其驱动的类名,Class.forName("oracle.jdbc.driver.OracleDriver");//加载并注册驱 ...

  3. Cacheable key collision with DefaultKeyGenerator

    The default is to use the hashcode of each parameter and create another (32-bit) hash code. Obviousl ...

  4. MOOCULUS微积分-2: 数列与级数学习笔记 4. Alternating series

    此课程(MOOCULUS-2 "Sequences and Series")由Ohio State University于2014年在Coursera平台讲授. PDF格式教材下载 ...

  5. Beta版本冲刺第七天 12.13

    一.站立式会议照片: 二.项目燃尽图: Android端 后台 三.项目进展: 成 员 昨天完成任务 今天完成任务 问题困难 心得体会 胡泽善 用户评价的查看以及审核 用户详情的加入,并且修改了一些卡 ...

  6. p:commandButton vs h:commandButton

    同样的语句,换成primefaces就不刷新页面了.原来p的支持ajax.需要显示指定刷新全部页面.郁闷了一天了. <p:commandButton id="SearchTop&quo ...

  7. 高性能JavaScript笔记三(编程实践)

    避免双重求值 有四个标准函数可以允许你传入代码的字符串,然后它才你动态执行.它们分别是:eval.Function.setTimeout.setInterval 事实上当你在javascript代码中 ...

  8. 机器学习实战------利用logistics回归预测病马死亡率

    大家好久不见,实战部分一直托更,很不好意思.本文实验数据与代码来自机器学习实战这本书,倾删. 一:前期代码准备 1.1数据预处理 还是一样,设置两个数组,前两个作为特征值,后一个作为标签.当然这是简单 ...

  9. jpa datasource config

    application.properties spring.datasource.driverClassName= spring.datasource.url= spring.datasource.u ...

  10. 才知道创建数据表的后面int(M)的m居然和存储大小没有关系

    之前一直以为,后面m代表有几个字节 MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MyS ...