PHP文件及目录考察点
文件读取/写入操作
fopen()函数
用来打开一个文件,打开时需要指定打开模式
打开模式
模式 | 作用 |
---|---|
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'x' | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL |
'x+' | 创建并以读写方式打开,其他的行为和 'x' 一样。 |
写入函数
- fwrite()
int fwrite ( resource $handle , string $string [, int $length ] )
- fputs() : fwrite的别名
读取函数
- fread() : 读取文件(可安全用于二进制文件)
string fread ( resource $handle , int $length )
- fgets() : 从文件指针中读取一行
string fgets ( resource $handle [, int $length ] )
- fgetc() : 从文件指针中读取一个字符
string fgetc ( resource $handle )
关闭文件函数
- fclose()
不需要fopen()打开的函数
- file_get_contents() : 将整个文件读入一个字符串
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
- file_put_contents() : 将一个字符串写入文件 , 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
其他读取函数
- file() : 把整个文件读入一个数组中
array file ( string $filename [, int $flags = 0 [, resource $context ]] )
- readfile() : 读取文件并写入到输出缓冲。
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
访问远程文件
开启allow_url_fopen
,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写
目录操作函数
名称相关
- basename() : 返回路径中的文件名部分
string basename ( string $path [, string $suffix ] )
<?php
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "2) ".basename("/etc/passwd").PHP_EOL;
echo "3) ".basename("/etc/").PHP_EOL;
echo "4) ".basename(".").PHP_EOL;
echo "5) ".basename("/");
?>
输出:
1) sudoers
2) passwd
3) etc
4) .
5)
- dirname() : 返回路径中的目录部分
string dirname ( string $path )
<?php
echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or \ on Windows)
echo "3) " . dirname("."); // 3) .
?>
- pathinfo() : 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。
mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>
输出
/www/htdocs/inc
lib.inc.php
php
lib.inc
目录读取
- opendir() : 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
resource opendir ( string $path [, resource $context ] )
- readdir() : 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
string readdir ([ resource $dir_handle ] )
- closedir()
- rewinddir() : 将 dir_handle 指定的目录流重置到目录的开头。
void rewinddir ( resource $dir_handle )
目录删除
- rmdir() : 尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。
bool rmdir ( string $dirname [, resource $context ] )
目录创建
- mkdir() : 尝试新建一个由 pathname 指定的目录。
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
文件大小
- filesize()
目录大小
- disk_free_space()
- disk_total_space()
文件拷贝
- copy()
bool copy ( string $source , string $dest [, resource $context ] )
删除文件
- unlink() : 删除 filename。和 Unix C 的 unlink() 函数相似。 发生错误时会产生一个 E_WARNING 级别的错误。
bool unlink ( string $filename [, resource $context ] )
文件类型
- filetype() : 返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。
重命名文件或目录
- rename()
bool rename ( string $oldname , string $newname [, resource $context ] )
文件截取
- ftruncate()
bool ftruncate ( resource $handle , int $size )
文件属性
- file_exists()
- is_readable()
- is_writeable()
- is_executable()
- filectime() : 取得文件的 inode 修改时间。 (状态改变时间change time)
- fileatime() : 取得文件的上次访问时间(access time)
- filemtime() : 取得文件修改时间(modify time)
文件锁
- flock()
文件指针
- ftell() : 返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。
int ftell ( resource $handle )
- fseek() : 在文件指针中定位
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )
<?php
$fp = fopen('somefile.txt', 'r');
// 读取数据
$data = fgets($fp, 4096);
// 将指针移动到文件开头
// 与rewind($fp);效果一样
fseek($fp, 0);
?>
- rewind() : 将 handle 的文件位置指针设为文件流的开头。
示例
<?php
/**
* 遍历目录里面的文件
* 1 打开dir
* 2 排除掉. 和 ..的情况
* 3 如果是dir 则再对目录进行遍历,递归遍历
*/
function loopDir($dir)
{
$handle = opendir($dir);
while(false!==($file=readdir($handle))){//这里不能写成while($file=read($handle)),因为如果文件名为"0",也会被判断为false
if ($file == '.' || $file == '..') {
continue;
}
if (filetype($dir.'/'.$file)=='dir') {
loopDir($dir.'/'.$file);
} else {
p($dir.'/'.$file);
}
}
closedir($handle);
}
loopDir('.');
PHP文件及目录考察点的更多相关文章
- [APUE]文件和目录(中)
一.link.unlink.remove和rename 一个文件可以有多个目录项指向其i节点.使用link函数可以创建一个指向现存文件连接 #include <unistd.h> int ...
- [APUE]文件和目录(上)
一.文件权限 1. 各种ID 我在读这一章时遇到了各种ID,根据名字完全不清楚什么意思,幸好看到了这篇文章,http://blog.csdn.net/ccjjnn19890720/article/de ...
- ls: 无法访问/usr/sbin/smartctl: 没有那个文件或目录
环境:RHEL6.5 + Oracle 11.2.0.4 RAC 在安装RAC时,检查时缺少包 cvuqdisk-1.0.9-1,oracle提供脚本修复安装. 但在执行时报错: [root@orad ...
- 【Linux命令】文件和目录操作命令
本文主要用于常用命令的备忘,具体用法可用man查看,或查询其他资料. cd:改变工作目录 ls:列出目录的内容 mkdir:创建一个目录 cat:连接并显示指定的一个和多个文件的有关信息 cp:将给出 ...
- linux下创建文件与目录时默认被赋予了什么样的权限?
当我们创建一个新的文件或目录的时候,他的默认权限是什么? umask--指定当前使用者在创建文件或目录的时候默认的权限值 [root@iZ288fgkcpkZ default]# umask [roo ...
- linux 查找文件或目录
find / -maxdepth 2 -name "vmware*"在根目录/ 2层深度下搜索以vmware打头的文件或者目录
- java创建文件和目录
java创建文件和目录 2013-09-04 12:56 99933人阅读 评论(7) 收藏 举报 分类: JAVA基础(10) 版权声明:本文为博主原创文章,未经博主允许不得转载. 创建文件和目 ...
- Linux文件与目录管理
. 代表此层目录 . . 代表上一层目录 - 代表前一个工作目录 ~ 代表"目前用户身份"所在的中文件夹 ~account 代表accoun ...
- IOS管理文件和目录
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
随机推荐
- 实践001:char 类型字段在表中的长度
Rainy on 20170215 1.同事在 写RFC的时候遇到报错:"YTST_001" 必须为扁平结构.不能将内部表.字符# 原因是自建结构中字段定义为了string 类型. ...
- 在Orchard CMS Theme 用代码定义布局Widgets 配置
在上篇中主要详细的叙述了代码的编写,这一篇主要讲解配置.可能有人会有疑问,在上一篇的代码里只有对数据的展示部分的编写,并没有提供数据源.这就是Orchard的强大之处,数据源是通过在后台配置的,那有人 ...
- Servlet8
一.Annotation 进行配置不需要 web.xml 新建new Servlet 时,不需要在web.xml 文件中生成Servlet的相关信息 import java.io.IOExceptio ...
- Spring Cloud Sleuth 中id的使用
Spring Cloud Sleuth采用的是Google的开源项目Dapper的专业术语. Span:基本工作单元,发送一个远程调度任务 就会产生一个Span,Span是一个64位ID唯一标识的,T ...
- ThreadLocal工具类的使用(隔离思想)
ThreadLocal不是用来解决共享对象的多线程访问问题的, 通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象, ...
- Watir: 右键点击实例(某些如果应用AutoIt来做会更加简单高效)
require 'watir' module Watir class Element def top_edge assert_exists assert_enabled ole_object.getB ...
- 洛谷P4216 [SCOI2015]情报传递(树剖+主席树)
传送门 我们可以进行离线处理,把每一个情报员的权值设为它开始收集情报的时间 那么设询问的时间为$t$,就是问路径上有多少个情报员的权值小于等于$t-c-1$ 这个只要用主席树上树就可以解决了,顺便用树 ...
- 【爬坑系列】之kubernetes环境搭建:二进制安装与镜像安装
准备: 网上教如何编译与安装kubernetes的教程很多,需要提前准备的也很多,比如关闭selinux,防火墙啦....但有一点一定要注意,编译kubernetes源码时要求有2G内存,这个可是实打 ...
- Luogu P1233 木棍加工 【贪心/LIS】
题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间为1分钟: 如果刚处理 ...
- [SHOI2002]舞会
Descriptio 某学校要召开一个舞会,已知有N名学生,有些学生曾经互相跳过舞.当然跳过舞的一定是一个男生和一个女生,在这个舞会上,要求被邀请的学生中任一对男生和女生互相都不能跳过舞.问最多可邀请 ...