php 访问 其他 磁盘 文件_PHP编程中八种常见的文件操作方式

PHP编程中八种常见的文件操作方式

更新时间:2006年11月19日 00:00:00   作者:

文件和目录的操作

PHP处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题

1.打开文件

resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )

$handle = fopen(filename,mode)//打开文件,返回代表此文件的资源的句柄

文件名称可以使用相对路径或者绝对路径也可以使用网络协议模式,打开模式具有r\r+\w\w+\a\a+\x\x+\b

在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。

为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。

以下是几种打开文件的方式

$fp = @fopen('log.txt',"rb");

$fp = @fopen('../log.txt',"rb");

$fp = @fopen("http://www.runer.com.cn/default.htm","rb");//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项

代码部分

$filename1 = "userinfo.txt";//目录下或include_path中存在这个文件

$filename2 = "test.txt";//目录下或include_path并不存在这个文件

$resource1 = fopen($filename1,"rb");

@$resource2 = fopen($filename2,"rb");//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息

if($resource1)

echo "打开文件{$filename1}成功";

if(!@fopen($filename2,"r"))

echo "打开文件{$filename2}不成功";

//

---------------------输出结果----------------------------------------

打开文件userinfo.txt成功

---------------------------------------------------------------------

2.使用完毕文件后,要显式的告诉PHP已经使用完文件,让操作系统确保将文件的所有内容正确地从缓冲区刷新到硬盘

使用fclose()关闭文件,

bool fclose ( resource handle )//关闭一个已打开的文件指针

3.读取文件,fopen函数的mode参数允许读取,PHP提供了几个函数从文件读取数据

string fgets ( int handle [, int length] )从文件指针中读取一行,在二进制文件上尝试fgets会产生不可预测的结果

如果不指定长度,默认读取1K数据,碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止

string fgetss ( resource handle [, int length [, string allowable_tags]] )从文件指针中读取一行并过滤掉 HTML 标记

fgetc()读取单个字符

fread()读取任意二进制数据

代码部分

$handle = fopen ("test.jpg", "rb");

$c;

while (!feof($handle)) {

$contents .= @fread($handle, 8192);//循环读取并将其合并为一个大块文件

}

fclose($handle);

//

---------------------输出结果----------------------------------------

---------------------------------------------------------------------

4.判断文件读取的状态

每个文件句柄都有一个文件指针,或者一个指出下一个操作将在文件中哪里发生的游标,根据fopen函数的mode参数

文件指针最初位于文件的开头(0),或者文件的末尾

feof()可以判断文件是否已经到末尾(到末尾后函数返回TRUE)

filesize()函数返回文件的大小 5.写入文件

fwrite()函数执行文件写入

代码部分

$filename = 'test.txt';

$somec;

// 首先我们要确定文件存在并且可写。

if (is_writable($filename)) {

// 在这个例子里,我们将使用添加模式打开$filename,

// 因此,文件指针将会在文件的开头,

// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。

if (!$handle = fopen($filename, 'a')) {

echo "不能打开文件 $filename";

exit;

}

// 将$somecontent写入到我们打开的文件中。

if (fwrite($handle, $somecontent) === FALSE) {

echo "不能写入到文件 $filename";

exit;

}

echo "成功地将 $somecontent 写入到文件$filename";

fclose($handle);

} else {

}

echo "文件 $filename 不可写";

//

---------------------输出结果----------------------------------------

成功地将 添加这些文字到文件 写入到文件test.txt

---------------------------------------------------------------------

对于二进制数据,必须指定第三个参数,它包含写入到磁盘的数据字节数

$result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));

6.文件权限和其他信息

is_readable()//判断文件是否可读

is_writeable()//判断文件是否可写

is_writable()//判断文件是否可写

fileperms()//判断文件的权限(UNIX风格的文件权限测试函数)

file_exists()//是否存在这个文件

fileowner()//判断文件所属用户

filegroup()//判断文件所属组

7.删除和重命名文件

unlink()//删除文件

rename()//重命名文件

8.访问目录

目录访问建议使用前向斜线"/",兼容windows和unix系统

basename()//返回不包括路径信息的文件名

dirname()//返回文件名的目录部分

realpath()//接受相对路径,返回文件的绝对路径

pathinfo()//提取给定路径的目录名,基本文件名和扩展名

opendir()//打开目录,返回资源句柄

readdir()//读取目录项

rewinddir()//将读取指针返回开头

closedir()//关闭读取句柄

chdir()//改变当前脚本执行期间的当前工作目录

mkdir()//创建目录

rmdir()删除目录

代码部分

//

---------------------输出结果----------------------------------------

filename: web : filetype: dir

filename: study : filetype: dir

相关文章

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了PHP实现找出链表中环的入口节点,涉及php针对环形链表的遍历、查找、计算等相关操作技巧,需要的朋友可以参考下2018-01-01

0ea3c7666119d5615e582f823fb3fad6.png

页面优化和伪静态的说明。2009-10-10

4f96a78db829b1556ff16de21e013c7a.png

今天发现一段PHP代码中的时间判断语句出了点问题,研究了一下发现问题出在PHP的时区设置上,PHP所取的时间默认是格林威治标准时间,所以和北京时间相差8小时2012-06-06

8cc1031babc6aff2319f1c6af8544aa0.png

本篇文章是对PHP强制类型转换慎用进行了详细的分析介绍,需要的朋友参考下2013-06-06

0c932a99bb7b6f23c937db507070cc7b.png

这篇文章主要介绍了PHP实现取得HTTP请求的原文,需要的朋友可以参考下2014-08-08

cca732bf65a93ed2ec0ac80c638460fe.png

在利用php解析xml时提示Invalid byte 1 of 1-byte UTF-8 sequence错误了,这个问题我百度查实说是编码问题,结果我把编码处理一下果然KO了,下面我来分享一下解决办法2013-11-11

2d9f31f2af7b675a3d153d2b7f1035a7.png

以下是对php+mcDropdown实现文件路径可在下拉框进行选择的方法进行了详细的分析介绍,需要的朋友可以过来参考下2013-08-08

b452cee8ec5cd9e58ab98eba17281e59.png

计算两个时间戳相隔的时间,以前脚本之家发布过具体到天数的,这个可以具体到小时数,需要的朋友可以参考下。2009-12-12

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要给大家介绍了关于PHP中一个有趣的preg_replace函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用php具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-08-08

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值