php开发之文件指针,文件锁定

(1) rewind() 函数

该函数将文件handle的指针设为文件流的开头,语法如下:

bool rewind(resource handle)

(2)fseek() 函数

fseek()函数实现文件指针的定位,语法如下:

int fseek(resource handle,int offset[,int whence])

handle 参数为要打开的文件

offset为指针位置或者相对whence的参数的偏移量,可以是负值。

whence 包括以下三种:

a,SEEK_SET,位置等于offset字节。

b, SEEK_CUR,位置等于当前位置加上offset偏移量。

c, SEEK_END,位置等于文件结尾加上offset偏移量。

如果忽略 whence参数,系统默认为SEEK_SET。

(3) feof()函数

该函数用来判断文件指针是否是在文件尾,语法格式如下:

bool feof(resource hanlde)

如果文件指针到了文件尾,就返回true,否则返回false

(4) ftell()函数

ftell()函数用来返回当前指针的位置,语法格式如下:

int ftell(resource handle)

示例代码如下:


<?php

$filename ="1.txt";
if (is_file($filename)) {
    echo "文件总字节数:".filesize($filename)."<br>";
    $handle =fopen($filename, "rb");
    echo "指针的初始位置尾:".ftell($handle)."<br>";
    fseek($handle, 25);         //移动指针位置
    echo "使用fseek()函数后指针的位置:".ftell($handle)."<br>";
    echo "输出当前指针后面的内容:".fgets($handle)."<br>";
    if (feof($handle)) {
        echo "当前指针指向文件末尾".ftell($handle)."<br>";
    }
    else{
        echo "当前指针没有志向末尾:".ftell($handle)."<br>";
    }
    rewind($handle);
    echo "使用rewind()函数后当前指针指向位置:".ftell($handle)."<br>";
    echo "输出25个字节后的内容:".fgets($handle,25)."<br>";
    fclose($handle);

}else{
    echo "文件不存在";
}

?>

运行结果如下:

2,文件锁定

在一个文件进行写入操作时,需要先锁定该文件,以防止其他用户同时修改此文件。在php中,文件的锁定使用flock()函数来实现的。语法如下:

bool flock(int handle,int operation)

handle为一个已经打开的文件指针,operation的参数如下表:

锁定,写入,解锁关闭文件的示例代码如下:


<?php

$filename ="1.txt";
$handle =fopen($filename, "w");
flock($handle, LOCK_EX);
$str ="MMMMMMMMMMMMMMMMMMMMM";
fwrite($handle, $str);
flock($handle, LOCK_UN);
fclose($handle);
readfile($filename);

?>

运行结果如下:

时间: 2024-09-30 03:31:38

php开发之文件指针,文件锁定的相关文章

文件描述符与文件指针等文件操作的几个问题

1.二者对比: 文件描述符就是open文件时产生的一个整数,直到一个索引作用,它用于UNIX系统中,用于标识文件.它是系统调用产生的. 文件指针是指向一个FILE的结构体,这个结构体里有一个元素就是文件描述符.它用于ANSI C标准的IO库调用中,用于标识文件.fopen是依赖于open的: 既然FILE中包含文件描述符元素,可以用fopen()直接获取指针fp,然后使用fp获得fp中所包含文件描述符fd的信息. 文件描述符应该是唯一的,但文件指针(值)却不是唯一的,但指向的对象却应该是唯一的.

给大家分享web开发新手修改hosts文件实现本地域名访问的正确方法

1.如何正确修改hosts文件: 一般打开hosts文件里面都会有个示例,按照其格式修改即可 比如以下内容: # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 即代表打开rhino.acme.com这个网址将解析到102.54.94.97,ip地址与网址间至少有一空格,当然建议通过按Table键来编辑,即美观又不容易编写失误;这也就是通过解

Linux中文件描述符fd和文件指针flip的理解

转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp. open:文件描述符的操作(如: open)返回的是一个文件描述符(int fd),内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用(fd1,fd2,fd3...); fopen:而流(如: f

Windows Store App JavaScript 开发:获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括documentsLibrary(文档库).musicLibrary(音乐库)和videosLibrary(视频库)等.获取到用户库之后,就可以使用KnownFolders类中的getItemsAsync.getFilesAsync或getFoldersAsync函

文件描述符和文件指针的区别

文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小的正整数.每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针. 文件指针:C语言中使用文件指针做为I/O的句柄.文件指针指向进程用户区中的一个被称为FILE结构的数据结构.FILE结构包括一个缓冲区和一个文件描述符.而文件描述符是文件描述符表的一个索引,因此从某种意义上说文件指针就是句柄的句柄(在Windows系统上,文件描述符

java 文件指针复位

1 BufferedReader br = new BufferedReader(new InputStreamReader( 2 new FileInputStream("userremain.log"))); 3 String msg = null; 4 String mail = null; 5 String newDateString=null; //用户激活后第day天的存留率,先得到那天的日期 6 //要查看的某一天的新激活用户的存留率,先获得那天的所有的用户email 7

Android开发问题之R文件丢失

问题解析:1.有时候我们打开Android工程时,会发现gen文件夹下的R文件丢失了,这种情况的发生一般是发在在导入其他Android工程之后,原因是sdk版本问题:2.如果工程已经在eclipse软件中,可能是xml文件错误导致的. 解决方法:1.找到菜单栏中“项目”(project)选项下的“清理”(clean),然后在弹出的对话框中选择你要清理的工程:2.如果没有效果,可以选中项目名称,右击选择“源代码”->“清理”,确定完成.虽然两者都是清理操作,但感觉效果是不一样的:3.如果还是没有出

iOS开发- 生成/解析.vcf文件

vcf, 通讯录导出的一种格式. 一.生成vcf文件 如果要把我们iPhone通讯录里的数据, 生成vcf格式文件. 我们可以借助iCloud. 小技巧:通过iCloud导出iPhone通讯录的方法 当然, 如果你想在应用中, 利用代码生成, 完全可以.先导出通讯录数据, 再解析, 再生成vcf文件即可. 参考下面代码: -(NSString*)generateVCardStringWithContacts:(CFArrayRef)contacts { NSInteger counter = 0

PHP文件操作函数及文件指针理解

知识点: 一.fopen(),文件打开函数,读写参数有: 1.R  : 只读,指针在文件开头 2.r+:读写,指针同上 3.W :只写,写入前会删除文件内容,然后指针回到文件开头,文件不存在则创建 4.w+: 读写,其他同上 5.A: 只写,指针在文件末尾,文件不存在则创建,注意:此模式为"追加" 6.a : 读写, 同上 7.x:创建并打开文件(方式:只写),如果文件已存在,则返回一个E_warning错误 8.x+:创建并打开文件(方式:读写),其他同上 总结:R方式读写不错,W会