文件操作

  文件打开函数 
    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);

PHP面试 PHP基础知识 七(文件及目录处理)的更多相关文章

  1. Linux基础知识之文件和目录的权限机制

    Linux中的用户 Linux中的用户有三类,分别是: 所有者(u) 同组用户(g) 其他人(o) 如下图所示,假设存在两个组:groupA和groupB,rachel和ross属于组groupA,m ...

  2. UNIX基础知识之文件和目录

    程序清单1-1 列出一个目录中的所有文件(ls命令的简要实现): [root@localhost unix_env_advance_prog]# cat prog1-.c #include " ...

  3. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  4. python基础知识六 文件的基本操作+菜中菜

    基础知识六 文件操作 ​ open():打开 ​ file:文件的位置(路径) ​ mode:操作文件模式 ​ encoding:文件编码方式 ​ f :文件句柄 f = open("1.t ...

  5. Linux基础知识之文件的权限(一)

    Linux基础知识之文件权限(一) Linux优点之一就是它拥有多用户多任务的环境,在提供文件共享的同时也能保证用户文件的安全性.所以,设置文件的权限管理变得尤为重要. 权限讲解 [der@Der ~ ...

  6. 死磕面试 - Dubbo基础知识37问(必须掌握)

    作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基 ...

  7. Linux基础知识之文件的权限(二)

    除了基本的r,w,x之外,在linux传统的ext2.ext3.ext4文件系统下,还可以设置其他 的文件属性.如chattr,lsattr,而在CentOS7中默认利用xfs作为默认的文件系统,就不 ...

  8. Winform 基础知识 之文件夹操作

    using System.IO; /// <summary> /// 删除文件夹下所有文件 /// </summary> /// <param name="di ...

  9. UNIX,基础知识,文件IO,文件和目录

    2015.1.27星期二,早晨阴天,中午下雪了今天上午老师不上课,程序语句,记一下:main(void){ int c; while((c = getc(stdin)) != EOF) if(putc ...

随机推荐

  1. Excel表格文本格式的数字和数字格式如何批量转换

    Excel表格文本格式的数字和数字格式如何批量转换 在使用Excel表格对数据求和时,只能对单元格内常规格式的数据进行计算,而不能对单元格中的文本格式的数据进行计算,特点就是在单元格的左上角有一个绿色 ...

  2. c# networkcomms 3.0实现模拟登陆总结 转载https://www.cnblogs.com/zuochanzi/p/7039636.html

    最近项目需要做一个客户查询状态系统,当前上位机缺少服务功能,于是找到了networkcomms 开源框架,作为项目使用. 最新版networkcomms 下载地址:https://github.com ...

  3. 【单例模式】懒汉式的线程安全问题 volatile的作用

    原文链接:https://blog.csdn.net/Activity_Time/article/details/96496579 ****** 1. 懒汉式的Java实现 public class ...

  4. Android组件内核之Fragment管理与内核(二)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从以下三个内容来介绍Fragment管理与内核: [Fragm ...

  5. 更换nginx默认端口以及配置文件位置

    前言 近段时间在准备毕业设计的前期准备,基本确定了前后端分离的架构,于是就需要用到了nginx. 在之前nginx是放在docker上,所以没有端口更改跟配置文件配置的烦恼.但是现在是直接放在服务器上 ...

  6. linux Jenkins搭建

    安装jdk 下载jdk   解压 jdk1.8 vim /etc/profile export JAVA_HOME=/usr/local/java/jdk1.8.0_111export CLASSPA ...

  7. Python最快的方式来读取大文本文件(几GB)

    我有一个大文本文件(约7 GB).我正在寻找是否存在阅读大文本文件的最快方法.我一直在阅读有关使用多种方法作为读取chunk-by-chunk以加快进程的过程. 例如,effbot建议 # File: ...

  8. WPF 动态添加控件以及样式字典的引用(Style introduction)

    原文:WPF 动态添加控件以及样式字典的引用(Style introduction) 我们想要达到的结果是,绑定多个Checkbox然后我们还可以获取它是否被选中,其实很简单,我们只要找到那几个关键的 ...

  9. KiCAD更新封装

    KiCAD更新封装 有时候我们画完了PCB,但发现某个封装类型的器件需要修改,可能是修改尺寸,也可能是修封装参考或者值,具体操作如下: 1.首先更新原理图封装 2.从原理图更新到PCB(如果修改了封装 ...

  10. ZOJ-3524 拓扑排序+完全背包(好题)

    题意:在一个DAG上,主角初始有W钱起点在s点,每个点有一个代价wi和价值vi,主角从起点走到某一点不能回头走,一路上可以买东西(一个点的东西可以买无限次),且体力消耗为身上负重*路径长度.主角可以在 ...