PHP文件读写操作相关函数总结

一、fwrite()写入文件

将程序中的数据保存到文件中比较容易,使用fwrite()函数就可以将字符串内容写入文件中。在文件中中通过字符序列\n表示换行符,表示文件中一行的末尾。当需要一次输入或输出一行信息时,请记住这一点。不同的操作系统具有不同的结束符号,基于UNIX的系统使用“\n”作为行结束字符,基于Windows系统使用“\r\n”作为行结束字符,基于Macintosh的系统使用“\r”作为行结束字符。当要写入一个文本文件并想插入一个新行时,需要使用相应操作系统的行结束符号。函数fwrite()的原型如下所示:

复制代码 代码如下:

int fwrite(resource handle,string string[,int length])           //写入文件

第一个参数需要提供fopen()函数打开的文件资源,该函数将第二个参数提供的字符串内容输出到由第一个参数指定的资源中。如果给出了第三个可选参数lenth,fwrite()将在写入了length个字符时会停止。否则将一直写入,直到到达内容结尾时才停止。如果写入的内容少于length个字节,该函数也会在写完全部内容后停止。函数fwrite()执行完成以后会返回写入的字符数,出现错误时则返回FALSE。下面的代码是写入文件的一个示例。

复制代码 代码如下:

<?php
//声明一个变量用来保存文件名
$fileName = "data.txt";
//使用fopen()函数以只写的模式打开文件,如果不存在则创建它,打开失败则通过程序
$handle = fopen($fileName,'w') or die('打开<b>'.$fileName.'</br>文件失败!!');
//循环10次写入10行数据到文件中
for($row=0;$row<10;$row++){
fwrite($handle, $row.":www.lampbrother.net\n");
}
fclose($handle);
?>

该程序执行后,如果当前目录下存在data.txt文件,则清空该文件并写入10行数据。如果不存在data.txt文件,则会创建该文件并将10行数据写入。另外写入文件还可以使用fputs()函数,该函数是fwrite()函数的别名函数如果需要快速写入文件,可以使用file_put_contents()函数,和依次调用fopen(),fwrite()以及fclose()函数的功能一样。该函数的使用代码如下所示:

复制代码 代码如下:

<?php
//声明一个变量用来保存文件名
$fileName = "data.txt";
//声明一个变量用来保存被写入文件中的数据
$data = "共10行数据\n";
for($row=0;$row<10;$row++){
//将10数据都存放到一个字符串变量中
$data .= $row.":www.lampbrother.net\n";
}
//一次将所有数据写入到指定的文件中
file_put_contents($fileName, $data);
?>

该函数可以将数据直接写入到指定的文件中。如果同时调用多次时,并向同一个文件中写入数据,则文件中只保存了最后一次调用该函数写入的数据。因为在每次掉哟哦那个时都会重新打开文件并将文件中原有的数据清空,所以不能像第一个程序那样连续写入多行数据。

二、读取文件内容

在PHP中提供了多个从文件中读取内容的标准函数,可以根据它们的功能特性在程序中选择哪个函数使用。这些函数功能及其描述如下表所示。

在读取文件时,不仅要注意行结束符号“\n”,程序也需要一种标准的方式来识别何时到达文件的末尾,这个标准通常成为EOF(End Of File)字符。EOF是非常重要的概念,几乎每种主流的编程语言中都提供了相应的内置函数,来分析是否到达了文件EOF。在PHP中,使用feof()函数。该函数接受一个打开的文件资源,判断一个文件指针是否位于文件的结束处,如果在文件末尾处,则返回TRUE。

①函数fread()

该函数用来在打开的文件中读取指定长度的字符串。也可以安全用于二进制文件,在区分二进制文件和文本文件的系统上(如Windows)打开文件时,fopen()函数的mode参数要加上'b'。函数fread()的原型如下所示:

复制代码 代码如下:

string fread(int handle,int length)         //读取打开的文件

该函数从文件指针资源handle中读取最多length个字节。在读取完length个字节数,或到达EOF时,或(对于网络流)当一个包可用时都会停止读取文件,就看先碰到哪种情况了。该函数返回读取的内容字符串,如果失败则返回FALSE。函数的使用代码如下所示:

复制代码 代码如下:

<?php
//从文件中读取指定字节数的内容存入到一个变量中
$filename = "data.txt";
$handle = fopen($filename, 'r') or die("文件打开失败 ");
$contents = fread($handle, 100);         //从文件中读取100个字节
fclose($handle);         //关闭文件资源
echo $contents;          //将从文件中读取的内容输出
 
//从文件中读取全部内容到一个变量中,每次读取一部分,循环读取
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, 'rb') or die("文件打开失败");     //以只读的方式,模式加了‘b'
$contents = "";
while(!feof($handle)){          //使用feof()判断文件结尾
$contents .=fread($handle, 1024);        //每次读取1024个字节
}
fclose($handle);       //关闭文件资源
echo $contents;         //将从文件中读取的全部内容输出
 
//另一种从文件中读取全部内容的方法
$filename = "data.txt";
$handle = fopen($filename, "r")or die("文件打开失败");
$contents = fread($handle, filesize($filename));        //使用fielsize()函数一起读出
fclose($handle);
echo $contents;
?>

如果你只是想将一个文件的内容读入到一个字符串中,可以用file_get_contents()函数,它的性能比上面的代码好得多。file_get_contents()函数是用来将文件的内容读入到一个字符串中的首选方法,如果操作系统支持,还会使用内存映射技术来增强性能。该函数的使用代码如下所示:

复制代码 代码如下:

<?php
echo file_get_contents("data.txt"); //读取文本文件中的内容并输出
echo file_get_contents("c:\\files\\somepic.gif"); //读取二进制文件中的内容并输出
?>

②函数fgets()、fgetc()

fgets()该函数一次至多从打开的文件资源中读取一行内容。函数fgets()的原型如下所示:

复制代码 代码如下:

string fgets(int handle[,int length])                             //从打开的文件中返回一行

第一个参数提供使用fopen()函数打开的资源。如果提供了第二个可选参数length,该函数返回length-1个字节。或者返回遇到换行或EOF之前读取的所有内容。如果忽略可选的length参数,默认为1024个字符。在大多数情况下,这意味着fgets()函数将读取到1024个字符前遇到换行符号,因此每次成功调用都会返回下一行。如果读取失败则返回FALSE。该函数的使用代码如下所示:

复制代码 代码如下:

<?php
$handle = fopen("data.txt", "r") or die("文件打开失败 "); //以只读模式打开文件
while(!feof($handle)){
$buffer = fgets($handle,4096); //一次读取一行内容
echo $buffer."<br>"; //输出每一个航
}
fclose($handle);
?>

函数fgetc()在打开的文件资源中只读取当前指针位置处的一个字符。如果遇到文件结束标志EOF,则返回FALSE值。该函数的使用代码如下所示:

复制代码 代码如下:

<?php
$fp = fopen('data.txt','r') or die("文件打开失败");
while(false !==($char = fgetc($fp))){
echo $char."<br>";
}
?>

③函数file()

该函数非常有用,与file_get_contents()类似,不需要使用fopen()函数打开文件,不同的是file()函数可以把整个文件读入到一个数组中。数组中的每个元素对应文件中相应的行,各元素由换行符分割,同时换行符仍附加在每个元素的末尾。这样,就可以使用数组的相关函数对文件内容进行处理。该函数的使用代码如下所示:

复制代码 代码如下:

<?php
//将文件test.txt中的内容读入到一个数组中,并输出
print_r(file(test.txt));
?>

④函数readfile()

该函数可以读取指定的整个文件,立即输出到输出缓冲区,并返回读取的字节数。该函数也不需要使用fopen()函数打开文件。在下面的示例中,轻松地将文件内容输出到浏览器。代码如下所示:

复制代码 代码如下:

<?php
//直接将文件data.txt中的数据读出并输出到浏览器
readfile("data.txt");
?>

时间: 2014-11-15

php常用文件操作函数汇总

本文实例分析了php常用文件操作函数.分享给大家供大家参考.具体方法如下: 这里搜集了大量的php中文件操作函数如有文件打开,创建,删除,更变组,读取写文件,文件上传以及打开远程文件,把内容写入文件等实例. 复制代码 代码如下: $fp=fopen("test.txt","r"); //以只读方式打开文件,将文件指针指向文件头 $fp=fopen("test.txt","r+"); //以读写方式打开文件,将文件指针指向文件头

PHP打开和关闭文件操作函数总结

在处理文件内容之前,通常需要建立与文件资源的连接,即打开文件.同样,结束该资源的操作后,应当关闭连接资源.所谓打开文件,实际是建立文件的各种有关信息,并使文件指针指向该文件,就可以发起输入或输出的实体联系在一起,也就禁止再对该文件进行操作.在PHP中可以通过标准函数fopen()建立与文件资源的连接,使用fclose()函数关闭通过fopen()函数打开的文件资源. ①函数fopen() 该函数用来打开一个文件,并在打开一个文件时,还需要指定如果使用它.也就是以哪种文件模式打开文件资源.服务器上

PHP常用文件操作函数和简单实例分析

PHP最常用的文件操作就是读取和写入了,今天就主要讲解一下读取和写入函数,并且做一个页面访问的计数功能,来记录一个页面的访问量. fopen():PHP中没有文件创建函数,创建和打开文件都用fopen()函数,函数的形式为:resource fopen( string filename, string mode ) 参数filename为打开或创建并打开的文件名,参数mode为打开的模式,具体模式如下: fread():PHP中可用于读取文件,函数的形式为:string fread( resou

php文件夹与文件目录操作函数介绍

php文件夹操作函数 string basename ( string path [, string suffix] )给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉.在 Windows 中,斜线(/)和反斜线()都可以用作目录分隔符.在其它环境下是斜线(/). string dirname ( string path ) 给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名.在 Windows

PHP操作文件的一些基本函数使用示例

在对文件进行操作时,不仅可以对文件中的数据进行操作,还可以对文件本身进行操作.例如复制文件.删除文件.截取文件及为文件重命名等操作.在PHP中已经提供了这些文件处理方式的标准函数,使用也非常容易,如下表所示: 在表中,四个函数如果执行成功,则都会返回TRUE,失败则返回FALSE.它们的使用代码如下所示: 复制代码 代码如下: <?php //复制文件示例 if(copy('./file1.txt','../data/file2.txt')){ echo "文件复制成功!"; }

CI框架中redis缓存相关操作文件示例代码

本文实例讲述了CI框架中redis缓存相关操作文件.分享给大家供大家参考,具体如下: redis缓存类文件位置: 'ci\system\libraries\Cache\drivers\Cache_redis.php' <?php /** * CodeIgniter * * An open source application development framework for PHP 5.2.4 or newer * * NOTICE OF LICENSE * * Licensed under

使用jdk7的nio2操作文件拷贝和剪切示例

复制代码 代码如下: package com.xyq.io.simply.core; import java.io.File;import java.io.IOException;import java.nio.file.FileVisitResult;import java.nio.file.FileVisitor;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import jav

Java NIO Path接口和Files类配合操作文件的实例

Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径,例如 / 或 C:\ ,而允许访问的根部件取决于文件系统: 2.以根部件开始的路径是绝对路径,否则就是相对路径: 3.静态的Paths.get方法接受一个或多个字符串,字符串之间自动使用默认文件系统的路径分隔符连接起来(Unix是 /,Windows是 \ ),这就解决了跨平台的问题,接着解析连接起来的结果,如果不是合法路径就抛出InvalidPathException异常,否则就

Python实现检测文件MD5值的方法示例

本文实例讲述了Python实现检测文件MD5值的方法.分享给大家供大家参考,具体如下: 前面介绍过Python计算文件md5值的方法,这里分析一下Python检测文件MD5值的另一种实现方法. 概述: MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权费用. 实现代码: #python 检测文件MD5值 #python version 2.6 import hashlib im

Python简单计算文件MD5值的方法示例

本文实例讲述了Python简单计算文件MD5值的方法.分享给大家供大家参考,具体如下: 一 代码 import sys import hashlib import os.path filename = sys.argv[1] if os.path.isfile(filename): fp=open(filename,'rb') contents=fp.read() fp.close() print(hashlib.md5(contents).hexdigest()) else: print('f

Java操作文件输出为字符串以及字符串输出为文件的方法

文件输出为字符串示例代码: /** * 读取文件为字符串 * * @return */ public static String readString() { String str = ""; File file = new File("C:/Users/wan7/Desktop/表单/粗集料试验/粗集料冲击值试验(T0322-2000).html"); try { FileInputStream in = new FileInputStream(file); //

如何利用python web框架做文件流下载的实现示例

hello 大家好, 前不久公司里有个需求,把时序数据库中的日志下载到本地. 大家都知道. 数据库里的数据 都是存在数据库里的(废话). 想把他下载到客户的本地. 有的同学第一反应是: 只有文件才能下载. 所以大多数同学会想到先把数据从数据库中读出来,然后写入到服务器中的某个文件夹下生成文件, 然后再下载. 其实这是非常不效率的方法, 最简单的方法是,我们从数据库中读取到文件后, 直接以流的形式让用户去下载. 这里我拿python flask框架来做例子,其实非常简单,步骤一共有3个 1: 取出

Java批量写入文件和下载图片的示例代码

很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来.,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点).导出的是一个html文件.可以直接打开,排版都还在. 看了下源码,是把日记存在一个json数组里了,图片还是在服务器,利用url访问,文字是在本地了. 但是想把图片下载到本地,然后和文字对应,哪篇日记下的哪些图片. 大概是如下的json数组. 大概有几百条,分别是头像.内容:文字||内容:图片.时间. 简单明了的jso

c# 在windows中操作IIS设置FTP服务器的示例

什么是FTP FTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以将 Internet 信息服务 (IIS) 配置为作为 FTP 服务器来运行. 这样,其他计算机便可以连接到服务器并将文件复制到服务器或者从服务器复制文件. 例如,如果您在自己的计算机上承载网站,并且希望允许远程用户连接到您的计算机并将他们的文件复制到服务器,则可以将 IIS 配置为充当 FTP 服务器. 主要实现方式 下面主要讲解一下,在Window的I