文件系统处理
Posted Irving_yx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统处理相关的知识,希望对你有一定的参考价值。
1.文件类型
在Windows系统下php只能获得三种文件类型:文件(file)、目录(dir)、未知(unknown)
在UNIX系统下PHP可以获取七种文件类型:块设备(block)、字符设备(char)、目录(dir)、命名管道(fifo)、文件(file)、符号链接(link)和未知类型(unknown)
函数:
filetype()函数获取文件类型
is_dir()判断给定的文件名是否是一个目录
is_file()判断给定的文件名是否是一个正常文件
2.文件属性
在编写程序时,经常需要用到诸如文件大小,文件类型,文件修改时间等常见属性
file_exists() 检查文件或目录是否存在
filesize() 取得文件大小
is_readable() 判断给定文件是否可读
is_writeable() 判断给定文件是否可写
is_executable() 判断给定的文件是否可执行
filectime() 获取文件的创建时间
filemtime() 获取文件的修改时间
fileatime() 获取文件的访问时间
stat() 获取文件大部分属性值
1 <?php 2 $file=stat("file.php"); 3 //只打印其中的管理数组,第13个元素以后为关联数组 4 print_r(array_slice($file,13)); 5 ?>
3.目录的基本操作
Windows下路径:
绝对路径:$path="D:\\wamp\\www\\phpWork\\index.php";(默认)
$path="D:/wamp/www/phpWork/index.php";(支持、建议)
相对路径:$path="./images/logo.png";
UNIX下路径:
绝对路径:$path="/var/www/phpWork/index.php";
相对路径:$path="images/logo.png";
1>关于路径的4个函数
basename()返回路径中的文件名部分
string basename(string path [,string suffix])
dirname()返回去掉文件名后的目录名
pathinfo()返回一个关联数组,包括指定路径中的目录名、基本名和扩展名三个部分,分别通过dirname、basename、extension来引用
realpath()获取指定文件的绝对路径
2>目录的遍历
*opendir("") -- 打开一个目录,返回此目录的资源句柄
*readdir(资源句柄) -- 从目中读取一个目录或文件,并指针向下移动一位。
*closedir(资源句柄)-- 关闭打开的目录
rewinddir(资源句柄) -- 倒回目录指针(移至首位)
3>统计目录大小
echo "当前磁盘可用大小:".(disk_free_space("./")/1024/1024/1024)."G<br/>";
echo "当前磁盘共计大小:".(disk_total_space("./")/1024/1024/1024)."G<br/>";
计算文件大小可以通过filesize()函数完成
4>目录操作与文件拷贝
*mkdir() -- 创建一个目录
*rmdir() -- 删除一个目录(只支持删除空目录)
*unlink() -- 删除一个文件
copy() --- 复制文件。不支持目录复制
4.文件的基本操作
*1. fopen(文件名,打开模式) ---打开一个文件
模式:读(r、r+)、 清空写(w/w+), 追加写(a/a+)、 创建模式(x,x+)
*打开模式: *r: 只读模式打开文件,文件指针执行首位。
r+: 可读可写模式打开文件,文件指针执行首位,若文件指针不是在最后,则是覆盖写。
*w: 以写方式打开文件,文件内容清空,若文件不存在,则尝试创建。
w+: 以写和读方式打开文件,文件内容清空,若文件不存在,则尝试创建。(也会覆盖写)
*a: 以追加内容方式打开文件,指针移至最后,若文件不存在,则尝试创建。
a+: 以追加内容和可读方式打开文件,指针移至最后,若文件不存在,则尝试创建。
x: 以创建方式打开文件,可写。若文件已存在,则报错。
x+: 以创建方式打开文件,可写可读。若文件已存在,则报错。
附加模式:
t: txt文本模式(字符流)
b: byte字节模式(二进制)默认 (字节流)
如:fopen("a.txt","rb");
文件的读写操作也叫流操作,其中流分为字符流(t)和字节流(b 二进制)
*2. fread(打开的文件资源,读取的长度) -- 读取文件内容。
*3. fwrite(打开的文件资源,被写入的字串[,长度]) -- 向文件写入内容。
*4. fclose(打开的文件资源) -- 关闭文件
5. fgets() -- 从文件资源中读取一行
6. fgetc() -- 读取一个字符
//不用fopen就可以直接对文件进行操作
*7. file() 将文件读出(内容是数组格式),并返回
*8. readfile() 将文件内容读出,并输出
9. file_get_contents() 读取文件内容
10.file_put_contents() 将指定内容写入文件
//文件指针操作
11. ftell() --返回文件指针的位置
12. fseek() --设置文件指针的位置
示例:
fseek($f,-2,SEEK_CUR); //从当前指针位置开始,向前移动2位
fseek($f,2,SEEK_SET); //从文件指针开始位置,向后移动2位
fseek($f,-5,SEEK_END); //从文件指针的最后位置开始,向前移动5位
13. rewind() --将文件指针移至首位
14.文件锁flock()
bool flock(int handle, int operation [, int &wouldblock])
第一个参数必须的,是一个已经打开的资源文件
第二个参数必须的,规定锁的类型:
LOCK_SH:取得共享锁(从文件中读取数据时使用)
LOCK_EX:取得独占锁(向文件中写入数据时使用)
LOCK_UN:释放锁定
LOCK_NB:附加锁定
以上是关于文件系统处理的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段