文件操作
文件打开函数
fopen()函数 //用来打开一个文件 打开时需要指定打开模式 语法:fopen( filename, mode, include_path, context); filename 必须 要打开的文件或URL mode 必须 该文件/流的访问类型。 include_path 可选 需要在include_path中检索文件,可以设为1或true context 可选 文件句柄的环境 可以修改流的行为选择 mode 参数 r 只读方式打开 文件指针指向文件头 r+ 读写方式打开 文件指针指向文件头 w 写方式打开 文件指针指向文件头 将文件内容清空 不存在创建新文件 w+ 读写方式打开文件指针指向文件头 将文件内容清空 不存在创建新文件 a 写入方式打开 文件指针指向文件末尾 不存在创建新文件 a+ 读写方式打开 文件指针指向末尾 不存在创建新文件 x 创建并以写入方式打开,将文件指针指向文件头。如果文件已经存在fopen()调用失败返回false x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已经存在fopen()调用失败返回false
文件写入函数
fwrite() 写入文件函数 语法:fwrite(file,string,lenght); file 要写入的打开文件 string 要写入打开文件的字符串 length 设置要写入文件的最大字节数 fputs() fwrite的别名 语法:fputs(file,string,length); 参数描述与fwrite相同
文件读取函数
fread() 读取函数 语法:fread(file,length); file 读取打开的文件 length 读取的最大字节数 fgets() 读取函数 从文件指针中读取一行 语法:fgets(file,length); file 要读取的文件 length 要读取的字节数 默认是1024字节 fgetc() 读取函数 从文件指针中读取一个字符 语法:fgetc(file) file 要读取的文件 注意:该函数可能返回布尔值 false,但也可能返回一个与 false 等值的非布尔值,例如 0 或者 ""。
文件关闭函数
fclose() 文件关闭函数 语法:fclose(file); file 关闭的文件
不需要fopen打开文件的函数
file_get_contents() 把整个文件读入一个字符串中 此函数可安全用于二进制对象 语法:file_get_contents(path,include_ptah,context,start,max_length) 参数 path 必须 要读取的文件 以下参数可选 include_path 想在include_path中搜寻文件 可以设置为1 context 可以修改流的行为选项,使用null,则忽略 PHP5.0添加 start 文件开始读取的位置 PHP5.1新加参数 max_length 设置读取的字节数 PHP5.1新加参数 file_put_contents() 把一个字符串写入文件中 语法:file_put_contents(file,data,mode,context) 参数 file 必须 要写入的数据的文件 不存在创建新文件 data 可选 写入文件的数据 可以是字符串 数组 或数据流 mode 可选 如何打开写入文件 可能的值 FILE_USE_INCLUDE_PATH FILE_APPEND LOCK_EX context 可选 可以修改流的行为选项 若使用null 则忽略
其他读取函数
file() 把整个文件读入一个数组中 语法:file(path,include_path,context); 参数 path 必须 要读取的文件 include_path 可选 想要在include_path 中搜寻文件 该参数设为1 context 可选 可以修改流的行为选项 使用null 则忽略 readfile() 输出一个文件 语法:readfile(filename,include_path,context); 参数 filename 必须 要读取的文件 include_path 可选 想要在include_path 中搜寻文件 该参数设为true context 可选 可以修改流的行为选项
访问远程文件
需要在php.ini配置文件中开启 allow_url_fopen,HTTP协议连接只能使用只读,FTP协议可以使用只读或只写
目录操作
名称相关函数
basename() 返回路径中的文件名 语法:basename(path,suffix); 参数 path 文件路径 suffix 文件名后缀 返回结果不带后缀名 $path = "d:/test/text.txt"; echo basename($path); //输出结果text.txt echo basename($path,'.txt'); //输出结果 text dirname() 返回路径中目录部分 语法:dirname(path); 参数 path 文件路径 $path = 'd:/test/test.txt'; echo dirname($path); //输出 d:/test
目录读取
opendir() 打开目录 语法:opendir(path,context); 参数 path 必需 要打开的目录路径 context 可以修改目录流的行为 readdir() 返回目录中下一个文件的文件名 语法:readdir(dir_handle); 参数 dir_handle 由opendir()打开的目录句柄资源 closedir() 关闭目录 语法:closedir(dir_handle); 参数 dir_handle 由opendir()打开的目录句柄资源 rewinddir() 重置由opendir()创建的目录句柄 语法:rewwinddir(dir_handle); 参数 dir_handle 由opendir()打开的目录句柄资源 实例 $dir = "./images/"; // 打开目录,然后读取其内容 if (is_dir($dir)){ if ($dh = opendir($dir)){ // 列出 images 目录中的文件 while (($file = readdir($dh)) !== false){ echo "filename:" . $file . "<br>"; } rewinddir(); // 再次列出 images 目录中的文件 while (($file = readdir($dh)) !== false){ echo "filename:" . $file . "<br>"; } closedir($dh); } }
目录删除
rmdir() 删除空的目录 语法:rmdir(path,context); 参数 path 必需 要删除的目录 context 可以修改流的行为的选项
创建目录
mkdir() 创建目录 创建成功返回true 失败返回false 语法:mkdir(path,mode,recursive,context); 参数 path 要创建的目录 mode 目录权限 默认 0777 recursive 是否设置递归模式 context 可以修改流的行为的选项
文件大小
filesize() 返回指定文件的大小 成功返回文件大小的字节数 失败返回false 语法:filesize(filename); 参数 filename 要检查的文件 echo filesize('text.txt'); 输出 :文件字节数 20
目录大小
disk_free_space() 返回目录中可用的空间 语法:disk_free_space(disrectory); 参数 disrectory 要检查的目录 echo disk_free_space("C:"); 输出:可用的字节数 209693288558 disk_total_space() 返回指定目录磁盘的总大小 语法:disk_total_space(directory) 参数 disrectory 要检查的目录 echo disk_total_space("C:"); 输出:返回空间总字节数 509693888668
文件拷贝
copy() 复制文件 语法:copy(source,destination) 参数 source 要复制的文件 destination 复制文件的目的地 echo copy("a.txt","b.txt"); 输出:echo true显示1 成功返回true 失败返回false
删除文件
unlink() 删除文件 若成功,则返回 true,失败则返回 false。 语法:unlink(filename,context) 参数 filename 要删除的文件。 context 可修改流的行为的一套选项 $res = unlink("test.txt"); var_dump($res); 输出:true
文件类型
filetype() 返回文件类型 成功 返回 7 种可能的值fifo char dir block link file unknown 失败 返回false 语法:filetype(filename) 参数 要检查的文件 echo filetype("test.txt"); 输出:file
重命名文件或者目录
rename() 重命名文件或目录 若成功,则该函数返回 true。若失败,则返回 false 语法:rename(oldname,newname,context) 参数 oldname 要重命名的文件或目录 newname 文件或目录的新名称 context 可修改流的行为的一套选项
文件截取
ftruncate() 把文件截断到指定的长度 成功则返回 TRUE,否则返回 FALSE 语法:ftruncate(file,size) 参数 file 要截断的打开文件 size 新的文件大小 //检查文件大小 echo filesize("test.txt"); $file = fopen("test.txt", "a+"); 打开文件 ftruncate($file,100); //截取文件 fclose($file); //关闭文件 //清空缓存,再次检查文件大小 clearstatcache(); echo filesize("test.txt");
文件属性
file_exists() 检查文件或目录是否存在 文件或目录存在则返回 true,否则返回 false 语法:file_exists(path) 参数 path 要检查的路径 is_readable() 判断指定文件名是否可读 定的文件或目录存在并且可读,则返回 TRUE。 语法:is_readable(file) 参数 file 要检查的文件 is_writable() 判断指定的文件是否可写 文件存在并且可写则返回 true 语法:is_writable(file) 参数 file 要检查的文件 is_executable() 文件是否可执行 如果文件存在且可执行,则返回 true。 语法:is_executable(file) 参数 file 要检查的文件 filectime() 返回指定文件inode上次修改时间 语法:fileatime(file) 参数 file 要检查的文件 fileatime() 文件的上次访问时间 语法:fileatime(file); 参数 file 要检查的文件 filemtime() 返回文件内容上次的修改时间 语法:filemtime(file); 参数 file 要检查的文件
文件锁
flock() 锁定或释放文件 若成功,则返回 true。若失败,则返回 false。 语法:flock(file,lock,block) 参数 file 要锁定或释放的已打开的文件 lock 使用哪种锁定类型 block 设置为 1 或 true,则当进行锁定时阻挡其他进程 lock 参数可以是以下值之一: 要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。 要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。 要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。 如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。
文件指针
ftell() 在打开文件中的当前位置 该函数返回文件指针的当前位置。若失败,则返回 false。 语法:ftell(file) 参数 file 要检查的已打开文件 fseek() 在打开的文件中定位 $file = fopen("test.txt","r"); // 输出当前位置 echo ftell($file); // 改变当前位置 fseek($file,"15"); // 再次输出当前位置 echo ftell($file); fclose($file); 输出: 0 15 rewind() 将文件指针的位置倒回文件的开头 若成功,则返回 true。若失败,则返回 false。 语法:rewind(file) 参数 file 已打开的文件 $file = fopen("test.txt","r"); //改变文件指针的位置 fseek($file,"15"); //把文件指针设定为 0 rewind($file); fclose($file);