00x1 文件的属性

文件属性

<?php
//-------------------------定义大小转换函数---------------
function changesize_dw($size){
$s = $size;
$dw = "";#pow(2,40)是2的40次方。
if($s >= pow(2,40)){#1的10次方就是1024,types到kb就是一次方,kb到mb就是二次方..类推
$dw = "TB";
}elseif($s >= pow(2,30)){
$dw = "GB";
}elseif($s >= pow(2,20)){
$dw = "MB";
}elseif($s >= pow(2,10)){
$dw = "KB";
}elseif($s >= pow(1,10)){
$dw = "types";
}
return $s.$dw;
}
//---------------------------文件属性--------------------
function getfile($filename) {
if(file_exists($filename)){
echo $filename."这个文件存在<br>";
switch (filetype($filename)) {
case 'dir':
echo "这是一个目录<br>";
break;
case 'char';
echo "这是一个字符设备<br>";
break;
case 'block';
echo "这是一个块设备<br>";
break;
case 'link';
echo "这是一个链接<br>";
break;
case 'file';
echo "这是一个文件<br>";
break;
default;
echo "该文件类型是未知类型。<br>";
}
echo "大小:".changesize_dw(filesize($filename))."<br>";
echo "取得文件的上次访问时间".fileatime($filename)."<br>";
//判断是否可读
if (is_readable($filename)) {
echo "文件可读<br>";
}else{
echo "文件不可读<br>";
}
//判断是否可写
if(is_writeable($filename)){
echo "文件可写<br>";
}else{
echo "文件不可写<br>";
}
}else{
echo "文件不存在<br>";
}
}
getfile("./hello.txt");
?>

CODE


00x2 解析目录路径

目录的基本操作

  • 1.解析目录路径
  • 2.遍历目录
  • 3.统计目录大小
  • 4.建立与删除目录
  • 5.复制目录

注意:

  1. 在linux中是正斜杠,windows中是反斜杠。可以使用DIRRECTORY_SEPARATOR常量(这种变量可夸平台)代替。
  2. 连接多个路径linux中是(:),windows中是(;)(windows案例就是环境变量中)可以使用PATH_SEOARATOR常量(这种变量可夸平台)
  3. 相对路劲:相对的路径  绝对路径:根路劲开始

00x3 遍历目录

<?php
print_r(glob("./../scripts/*.*"))#glob遍历scripts目录下所有的文件,指定后缀:*.php
?>

输出效果如下所示:

我们可以使用foreach将其遍历出来。

<?php
foreach(glob("./../scripts/*.*") as $filename){
echo $filename."<br/>";
}
?>

输出效果:


00x4 目录操作

<?php
$a = opendir('def');
while($filename = readdir($a)){#readdir函数是读取$a中的资源(资源即为文件名)
echo $filename."<br />";#第一次输出就输出第一个文件的文件名,第二次就输出第二次的文件名。
}
closedir($a);#关闭文件夹
?>

想要把.和..去掉。可以使用if

<?php
$a = opendir('def');
while($filename = readdir($a)){#readdir函数是读取$a中的资源(资源即为文件名)
if($filename !="." && $filename !=".."){
echo $filename."<br />";#第一次输出就输出第一个文件的文件名,第二次就输出第二次的文件名。
}
}
closedir($a);#关闭文件夹
?>

如果我想要区分出哪些是文件,哪些是目录该咋做呢?

<?php
$a = opendir('def');
while($filename = readdir($a)){#readdir函数是读取$a中的资源(资源即为文件名)
if($filename !="." && $filename !=".."){
$filename = "/def/".$filename; if(is_dir($filename)){
echo "目录:".$filename;
}else{
echo "文件:".$filename."<br />";#第一次输出就输出第一个文件的文件名,第二次就输出第二次的文件名。
}
}
}
closedir($a);#关闭文件夹
?>

想要再次遍历一次数组。可以使用rewinddir倒回目录句柄函数。比较简单我就给折叠了。要看自己打开哈。

<?php
$a = opendir('def');
while($filename = readdir($a)){#readdir函数是读取$a中的资源(资源即为文件名)
if($filename !="." && $filename !=".."){
$filename = "./def/".$filename; if(is_dir($filename)){
echo "目录:".$filename."<br>";
}else{
echo "文件:".$filename."<br />";#第一次输出就输出第一个文件的文件名,第二次就输出第二次的文件名。
}
}
}
rewinddir($a);
echo "++++++++++++++++++++++++++++++++++++++++++++++++++<br>";
while($filename = readdir($a)){#readdir函数是读取$a中的资源(资源即为文件名)
if($filename !="." && $filename !=".."){
$filename = "./def/".$filename; if(is_dir($filename)){
echo "目录:".$filename."<br>";
}else{
echo "文件:".$filename."<br />";#第一次输出就输出第一个文件的文件名,第二次就输出第二次的文件名。
}
}
}
closedir($a);#关闭文件夹
?>

00x5 文件的一些基本操作

<?php
//以下较为简单可以直接查手册。
//copy("def.txt","hello.txt");
//rename("hello","world");
//删除文件:unlink("def");
//删除变量:unset($a);
//file_put_contents("./def.txt", "hello world!") #向def.txt写入hello world!如果第二次写的话会将其覆盖。
//file_exists #检索文件是否存在
//readfile("./def.txt") #输出def.txt文件当中的内容。
//++++++++++++++++++++++++++++++++++++++++++
//fread案例:使用二进制的形式去读取文件
// $a = fopen("./def.txt","rb");//fopen打开的可以是一个URL、一个文件。
// $b = fread($a,10);
// echo $b;
// fclose($a);
//++++++++++++++++++++++++++++++++++++++++++
//
?>

fopen的模式:http://www.w3school.com.cn/php/func_filesystem_fopen.asp

注意哦,w这个模式会将文件清空再打开。

fwrite写入文件:

fwrite("./def.txt","你好,世界。");

fgetc从文件指针中读取文件:

$a = fopen("./def.txt","r+");
echo fgetc($a);

但是这样只可以读取出def.txt里的一个字符。如果要读取出def.txt中的所有内容那么该用switch循环输出。在此之前还要学习一个函数,就是feof函数,feof:当文件指针指到了EOF(end of file,文件的最后)则返回真,否则返回false。

$a = fopen("./def.txt"."r+");
switch (!feof($a)){#当$a没有指到文件的最后的时候一直循环
  echo fgetc($a);
}

但其实fgetc还有第二个参数就是读取的长度。fgetc($a,5);所以我们要读取def.txt里面的所有数据也可以那么写,fgetc($a,filesize('./def.txt'));

00x6 文件的锁定机制

文章地址:http://www.cnblogs.com/xishaonian/p/6410382.html

跟着百度学PHP[12]-文件处理 文件 目录的更多相关文章

  1. 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...

  2. 跟着百度学PHP[13]-文件处理 文件后缀验证、设置随机文件名....

    目录: 文件的处理:00x1 判断错误 文件的处理:00x2 判断类型 文件的处理:00x3 文件大小 ++++++++++++++++++++++++++++++++++++++++++++++++ ...

  3. 跟着百度学PHP[13]-文件上传

    PS:上传的时候一定要用POST方法,GET方法不行. 文件上传的entype要改成“mutilpart/form-data”这个编码 <html> <form action=&qu ...

  4. 跟着百度学PHP[14]-COOKIE的应用/网站登陆案例完整案例

    先在数据库当中创建以下数据: mysql> create table user( -> id int not null auto_increment, ) not null default ...

  5. 跟着百度学PHP[6]超级全局变量

    超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用. 参考文献:http://www.runoob.com/php/php-superglobals ...

  6. 跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)

    函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php ...

  7. 跟着百度学PHP[11]-PHP当中的异常处理

    首先要说一下常见的三种错误: 1.语法错误 2.运行错误 3.逻辑错误 00x1 错误报告及错误级别 PHP的错误分为三个等级 1.注意(notice)   没有变量a 2.警告(warning) 没 ...

  8. 跟着百度学PHP[9]-session会话

    参考:http://www.w3school.com.cn/php/php_sessions.asp session变量用于存储有关用户的会话的信息,或更改用户会话的设置,session变量保存的信息 ...

  9. 跟着百度学PHP[17]-PHP扩展CURL的POST传输数据

    如果是GET的话就不必那么多设置.但是基本需要用到POST就需要用到以下的几个设置选项. <?php $username = "admin"; $password = &qu ...

随机推荐

  1. C#特性杂谈

    文中充满了各种C#与其他语言的对比及吐槽, 希望介意者勿观… 当然, 鉴于太乱, 我怀疑有没有人能看完. 学习C# Hello World 变量与表达式 动态类型 值类型和引用类型 checked支持 ...

  2. Android -- 写xml到SD卡中

    信息类                                                                                          private ...

  3. [ES6] 05. The leg keyword -- 3. Block Scope

    In ES6, IIFE is not necessary: // IIFE写法 (function () { var tmp = ...; ... }()); // 块级作用域写法 { let tm ...

  4. ZOJ 3630 Information 强连通

    题意:n m表示n个节点,m条边,下面m行a b 表示a-b点有一条有向边 题目:给定有向图,删去一个点后,可以求出该图中强连通分量中最大的点数 问:删去某点后,最大点数 最小是多少 思路:枚举删点, ...

  5. Quartz.Net的使用(简单配置方法)定时任务框架

    Quartz.dll 安装nuget在线获取dll包管理器,从中获取最新版 Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”. ...

  6. 算法笔记_138:稳定婚姻问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 何为稳定婚姻问题? 有一个男士的集合Y = {m1,m2,m3...,mn}和一个女士的计划X = {n1,n2,n3,...,nn}.每一个男士有 ...

  7. Event sender

    Sometimes it is convenient to know which widget is the sender of a signal. For this, PyQt4 has these ...

  8. 使用SimHash进行海量文本去重

    阅读目录 1. SimHash与传统hash函数的区别 2. SimHash算法思想 3. SimHash流程实现 4. SimHash签名距离计算 5. SimHash存储和索引 6. SimHas ...

  9. OJ帐号保存

    TOJ 614173971 HDU 宇智波佐助 POJ shiai ZOJ henyumen UVa henyumen Light OJ HENYUMEN bzoj henyumen ural 165 ...

  10. [转载]编写高性能js

    一.执行效率 1. DOM 1.1 使用DocumentFragment优化多次append 说明:添加多个dom元素时,先将元素append到DocumentFragment中,最后统一将Docum ...