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. 什么是vBlock

    Vblock产品是指一种建立系统的方式,Vblock提供的是一个集成包,是一种完整的IT基础架构,并不是一个具体的设备. 具体点就是:Vblock是一个融合了思科服务器与网络.EMC存储系统与管理软件 ...

  2. C#中的yield

    一.C#中yield关键字用于遍历循环中,yield语句的两种形式 yield return用于返回IEnumerable<T>, yield break用于终止循环遍历. 二.yield ...

  3. 转adb Shell root 权限

    永久root带文件 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb pus ...

  4. C#应用视频教程3.2 Halcon软件测试

    Halcon是图像处理比较牛逼的一个软件(德国人的东西,做的非常强大,里面集成的算法很多,可能你一辈子研究这个也做不过他),然而牛逼归牛逼,康耐视,基恩士也很牛逼,但是日本人的东西一般太过封闭,屌丝用 ...

  5. android开机启动代码

    1)public class StartupReceiver extends BroadcastReceiver { @Override public void onReceive(Context c ...

  6. jsp标签(jsp动作元素)

    <jsp:forward page=”/index.jsp”></jsp:forward>也是跳转. 可以用来配置为首页,来启动某个servlet. <jsp:inclu ...

  7. iOS 全屏侧滑/UIScrollView/UISlider间滑动冲突

    代码地址如下:http://www.demodashi.com/demo/13848.html 效果预览 一.前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewCont ...

  8. C++ bool和string转换

    直接贴代码吧.用g++能够编译.測试ok #include <iostream> #include <sstream> using namespace std; int mai ...

  9. SyntaxError: Non-ASCII character '\xe5' in file index.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    python入门,hhh 在慕课网上学习python入门,编写汉诺塔的递归调用时,代码正确.但是加上注释后编译不通过 报如下错误: SyntaxError: Non-ASCII character , ...

  10. 阿里云rds linux平台使用wget 工具下载备份与日志文件

    1. 获取备份下载地址 RDS 控制台  备份恢复  数据备份,选择需要下载的备份集,点击“下载”. 点击“复制内网地址” 或 “复制外网地址” 来获取备份的 内网 或 外网 下载地址. 日志备份的地 ...