目录操作:
获取路径文件名:basename();
获取路径目录:dirname();
获取路径信息:pathinfo();
将相对路径转化为绝对路径:realpath();
$path = 'C:AppServwwwasic6demo1.php'; echo basename($path); //获取路径的文件名 echo dirname($path);//获取路径的目录部分 //print_r(pathinfo($path)); $array_path = pathinfo($path);//关于路径的信息:pathinfo()函数创建一个关联数组,其中包括:目录名、基本名和扩展名。 echo $array_path['dirname']; echo '<br />'; echo $array_path['basename']; $path = 'demo1.php'; echo realpath($path);//realpath()函数将path中的所有符号链接和相对路径引用转换为相应的硬链接和绝对路径。 $path2 = '../basic5/index.php'; echo realpath($path2);
磁盘、目录和文件大小
//磁盘文件大小 echo round(filesize($path)/1024,2);//确定文件的大小:返回的是字节,除以1024就是kb,round()四舍五入 echo round(disk_free_space('C:')/1024/1024/1024,2).'GB';//c盘可用空间 echo round(disk_total_space('C:')/1024/1024/1024,2).'GB';//c盘总空间 // 时间 // 确定文件的最后改变时间:filectime() // 确定文件的最后修改时间:filemtime() // 确定文件的最后访问时间:fileatime() echo fileatime($path);//确定文件的最后访问时间:fileatime()函数返回文件的最后访问时间,采用的Unix时间戳格式。 date_default_timezone_set('Asia/Shanghai'); //调整时区 echo date('Y-m-d H:i:s',fileatime($path)); //按格式化输出
文件处理
资源(resource)这个词常常与可以发起输入或输出流的实体联系起来。标准输入或输出、文件和网络套接字都是资源的例子。因此你会经常看到本节所介绍的很多函数都是在资源处理的上下文中讨论的,而不是文件处理,这本身是因为所有这些函数都能够与前面所述的资源结合使用。但是,由于这些函数与文件结合使用是应用中最常见的。
将数据写(读出)入一个文件,有3个步骤:
1. 打开这个文件。如果文件不存在,需要先创建它。
2. 将数据写入这个文件。
3. 关闭这个文件
//1 $fp = fopen('file.txt',r); echo fgetc($fp); //读出一个字符 echo '<br />'; echo fgets($fp); //读出一行,有可选参数,读参数减一个字节 echo '<br />'; echo fgetss($fp); //读出一行,过滤HTML echo '<br />'; echo fread($fp, 2); //第二个参数必选,读出多少个字符 echo '<br />'; echo fpassthru($fp); //输出文件指针处的所有剩余数据。 2不需要句柄 print_r(file('file.txt')); //不用句柄,把文件读入一个数组,以行分组 readfile('file.txt'); //将文件读出来,可以本身直接输出浏览器,不需要echo,返回字节总长度 echo file_get_contents('file.txt'); //可以读入数据到缓冲区,通过echo打印 3通过fgetc()读出所有内容 $fp = fopen('file.txt','r'); while (!feof($fp)){ //判断读完文件函数:feof() ,返回true ,!feof() 返回false; echo fgetc($fp); } 查看文件是否存在:file_exists();比如读取一个文件时,必须保证文件必须存在,才能操作,有必要做检测 if(file_exists('file.txt')){ echo '执行'; }else { echo '请管理员后台重新生成'; } 查看一个文件的大小:filesize(); 删除一个文件:unlink(); echo filesize('file.txt'); //查看文件大小 unlink('file2.txt'); //删除文件 在文件中指针定位:rewind()、fseek()和ftell(); rewind()函数可以将文件指针复位到文件的开始。 ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。 fseek()函数可以将文件指针fp从whence位置移动offset字节。 $fp = fopen('file.txt','r'); echo fgetc($fp); //t echo ftell($fp); //查看文件指针位置 echo fgetc($fp); //h echo ftell($fp); rewind($fp); //将文件指针移到开头 echo ftell($fp); echo fgetc($fp); //t echo '<br />'; echo fgetc($fp); echo ftell($fp); fseek($fp, 5);//将文件指针定位到第五的位置 echo ftell($fp); fclose($fp);
文件锁定
假设两个客户试图同时订购同一件商品。那么他们同时打开了这个文件,同时的更新,就会出现少一个客户订购的数据。
为了避免这样的问题,可以使用文件锁定的方法。
$fp = fopen('file.txt','ab'); //a表示可以追加,b表示二进制,这样移植性好 flock($fp, LOCK_EX);//锁定 fwrite($fp, 'this is lock'); flock($fp, LOCK_UN);//解锁
目录句柄操作
// opendir():打开路径指定的目录流。 // closedir():关闭目录流。 // readdir():返回目录中的各个元素。 $dir = opendir('C:AppServwwwasic6');//打开一个目录 //使用循环来读出目录里的各个元素 while (!!$file = readdir($dir)){ echo $file.'<br />'; } closedir($dir);//关闭 scandir():将目录读入数组。 print_r(scandir('C:AppServwwwBasic5')); rmdir():删除指定的目录。 rmdir('C:AppServwwwBasic5123'); rename():重命名文件和文件 rename('Demo1.php','Demo01.php');
一.磁盘、目录和文件计算