PHP文件系统处理(二)
1.文件的打开和关闭(读文件中的内容,向文件中写内容)
读取文件中的内容
file_get_contents() //php5以上
<?php $filename="./test.txt"; //读出文件的内容 echo file_get_contents($filename); echo "<br>"; //向文件中写内容,返回写入到文件内数据的字节数 echo file_put_contents("./one.txt","123"); echo "<br>"; ?>
file();
readfiel();
不足:全部读取,不能读取指定的区域
读取部分字符:
fopen(URL,mode)
mode:
r 以只读的模式打开文件
r+ 比读的方式多了个写
w 以只写的方式打开,如果文件不存在,则创建这个文件,并写入数据,如果文件存在,会将源文件中的数据清除,再写入
w+ 比写的方式多了个读
a 以只写的方式打开,如果文件不存在,则创建这个文件,并写入文件,如果原文件有内容,但是不清除文件内容(追加)
a+ 比写的方式多了个读
b 以二进制模式打开文件(图片,电影)
t 以文本模式打开文件
fread() //读取指定长度的字符
fgetc() //一次从文件中读取一个字符
fgets() //一次从文件中读取一行字符
feof($file); 如果读取文件出错,或到文件结束,则返回真
写入文件内容
file_put_contents() //php5以上
如果文件不存在,则创建并写入内容
如果文件存在,则删除文件原来的内容,重新写入
不足:不能以追加的方式写
fopen()
fwrite() 别名fputs()
fwrite(文件的资源(fopen返回的),写的内容)
<?php //如果打开成功则返回资源,如果失败返回false $file=fopen("./test.txt","r"); //fread()从文件中读取指定长度的字符 echo fread($file,5)."<br>"; //从文件中每次读取一个字符 echo fgetc($file)."<br>"; //从文件中每次读取一行字符 echo fgets($file); //关闭文件资源 fclose($file); //读取远程文件 $file=fopen("http://www.163.com", "r"); $str=""; //feof();读取文件出错或文件内容读完,返回真 while(!feof($file)){ $str.=fread($file,1024); } echo $str; //关闭文件 fclose($file); $file=fopen("./test.txt","w"); //向文件中写内容 fwrite($file,"wwwwwww"); fclose($file); //以追加的方式写入 $file=fopen("./test.txt","a"); fwrite($file,"aaaaaaaaa"); fclose($file); ?>
本地文件
./test.txt
C:/appserv/www/index.php
远程文件
http://www.baidu.com等
2.文件内部指针
ftell(); 返回文件指针读/写的位置
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] ) 在文件指针中定位
whence values are:
•SEEK_SET - 设定位置等于 offset 字节。
•SEEK_CUR - 设定位置为当前位置加上 offset。
•SEEK_END - 设定位置为文件尾加上 offset。
rewind(); 文件指针回到文件开始的位置
<?php $file=fopen("./test.txt","r"); //ftell();返回文件指针读写的位置 echo ftell($file)."<br>"; echo fread($file,10)."<br>"; echo ftell($file)."<br>"; //fseek(); 在文件指针中定位 fseek($file,-20,SEEK_END); echo ftell($file)."<br>"; echo fread($file, 20)."<br>"; //返回文件头部 rewind($file); echo ftell($file); fclose($file); ?>
用文件处理写的小小留言板
<?php$mess="./file.txt";if(isset($_POST["sub"])){ $strmess=$_POST["name"].'<l>'.$_POST["til"].'<l>'.$_POST["con"].'<l>'.time().'<n>'; write($mess,$strmess); if(file_exists($mess)){ $con=read($mess); //rtrim()去掉右边的字符 为了分隔,把最后一个<n>去掉 $con=rtrim($con,"<n>"); //explode()以<n>分隔字符串 $rows=explode("<n>", $con); foreach ($rows as $row) { //list()分割后的字符串赋值给相应的变量 list($username,$title,$content,$time)=explode("<l>", $row); echo '<p>'.$username.'在'.date("Y-m-d H:i:s",$time).'说'; echo $title." "; echo $content.'</p>'; } }} //从文件中读数据function read($fileName){ // $file=fopen($fileName, "r"); //flock(,LOCK_SH)给文件加锁(读出数据) if(flock($file, LOCK_SH)){ //读出文件的全部数据 $con=fread($file,filesize($fileName)); //释放锁定 flock($file, LOCK_UN); } fclose($file); return $con;} //向文件中写数据function write($fileName,$mess){ //追加写 $file=fopen($fileName,"a"); //flock()给文件加锁(写入数据) if(flock($file,LOCK_EX)){ fwrite($file, $mess); //释放锁定 flock($file,LOCK_UN); } fclose($file);} ?><form action="8.php" method="post"> Name:<input type="text" name="name"><br> Title:<input type="text" name="til"><br> Body:<textarea name="con"></textarea><br> <input type="submit" name="sub" value="提交"><br></form>
PHP文件系统处理(二)的更多相关文章
- Node.js之操作文件系统(二)
Node.js之操作文件系统(二) 1.创建与读取目录 1.1 创建目录 在fs模块中,可以使用mkdir方法创建目录,该方法的使用方法如下: fs.mkdir(path,[mode],callbca ...
- linux文件系统 - 初始化(二)
加载initrd(上) 一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可 ...
- Linux磁盘及文件系统(二)Linux下磁盘命名和分区
在为主机添加硬盘之前,首先需要了解Linux系统下对硬盘和分区的命令方法 一.磁盘命名 Linux下对SCSI和SATA设备是以sd命名的,第一个SCSI设备是sda,第二个是sdb....以此类推. ...
- Hadoop概念学习系列之常见的分布式文件系统(二十六)
常见的分布式文件系统有,GFS.HDFS.Lustre .Ceph .GridFS .mogileFS.TFS.FastDFS等.各自适用于不同的领域.它们都不是系统级的分布式文件系统,而是应用级的分 ...
- linux源代码阅读笔记 linux文件系统(二)
上一篇文章说到linux文件系统中分为超级块,inode块,block块.inode块给出文件的权限,修改时间,大小等信息. 但是实际上,文件的数据是存储在block块中的.而inode块中给出了存储 ...
- EXT2/EXT3文件系统(二)
整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ 接EXT2/EXT3文件系统(一): 2.3 Supe ...
- /proc文件系统(二):/proc/<pid>/stat
0. 前言 /proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. 它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某 ...
- BlueStore-先进的用户态文件系统《二》-BlueFS
https://zhuanlan.zhihu.com/p/46362124 简介 上一篇文章中,介绍了BlueStore的诞生背景.逻辑架构以及设计思想,提到了在BlueStore中元数据都是存放在R ...
- CentOS7搭建FastDFS V5.11分布式文件系统(二)
1.CentOS7 FastDFS搭建 前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包: 点这里点这里 1.1 安装libfa ...
- Yocto开发笔记之《根文件系统裁剪》(QQ交流群:519230208)
开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...
随机推荐
- js(引用类型和setTimeout scope)
题目是群中小伙伴出的. var a = [1,2,3]; c= a //todo 限制条件 c 不能出现在 = 左边 console.log(a) console.log(c) console.log ...
- Eclipse管理Java工程(j2se/j2ee/maven)
Eclipse管理J2SE/J2EE(Maven)项目 eclipse是一个集成开发工具,有编译,运行,打包部署等功能.eclipse可以新建多种项目,不同的项目有不同的IDE层次结构,方便用户管理资 ...
- python获取文件时间
import time, os create_time = time.ctime(os.path.getctime(filename)) modify_time = time.ctime(os.pat ...
- discuz核心类库class_core的函数注释
class discuz_core { // 数据库存储引擎 var $db = null; // 内存缓冲object var $mem = null; // 会话 object var $sess ...
- 集成 Apple Pay
作者感言 在中秋过后终于把国内的三大支付平台SDK集成都搞定了, 现在我们终于可以来研究Apple自家的支付Apple Pay最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考 ...
- Poj 1273 Drainage Ditches(最大流 Edmonds-Karp )
题目链接:poj1273 Drainage Ditches 呜呜,今天自学网络流,看了EK算法,学的晕晕的,留个简单模板题来作纪念... #include<cstdio> #include ...
- 20145236 《Java程序设计》实验二实验报告
北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.08 实验名称: Java面向对象程序设计 实验内容: 初步掌握单元测试和T ...
- 449. Serialize and Deserialize BST——几乎所有树的面试题目都会回到BFS或者DFS,使用BFS,None节点存#
Serialization is the process of converting a data structure or object into a sequence of bits so tha ...
- 25款漂亮的 WordPress 杂志主题
WordPress是一个免费和开源博客工具和一个内容管理系统(CMS)基于 PHP 和 MySQL,它运行在一个 Web 托管服务.每个月的 WordPress 主题是由开发人员,其中用户喜欢使用 W ...
- sqlserver 2008 左补齐字符串
SQLServer:right函数 语法 Right(string, length) Right 函数的语法具有下面的命名参数: 部分 说明 string 必要参数.字符串表达式,从中最右边的 ...