PHP核心编程--目录操作(包含文件操作)
一.目录操作
1. 创建目录
创建目录mkdir(目录名称) //返回值为布尔

一次性创建主目录及其子目录

判断是不是一个目录is_dir //返回true,false

判断目录或文件是否存在file_exists //返回值为布尔


返回路径中的目录部分 dirname


2. 打开目录,
opendir — 打开目录句柄
opendir(目录路径) //返回的是一个目录句柄.

readdir(目标句柄) //读取目录中的条目,

目录名为零的处理

//目录名中文的处理 iconv(in_charset, out_charset, str) //说明: //将字符串由in_charset字符集 转为 out_charset字符集 //如: iconv(‘gbk’, ‘utf-8’, $str); //将$str由字符集gbk,转为utf-8;

3. 关闭目录
Closedir(目标句柄);//关闭目录,是为了释放内存资源.
有打开必须有关闭. Opendir,与closedir成对出现.


4. 目录重命名, 移动目录
rename(oldname, newname) //将oldname修改为newname; //返回值为布尔


5. 删除目录,
rmdir(目录名称) //返回值为布尔

二.文件操作
1. 打开文件
打开文件的方式fopen
fopen(文件路径,打开模式); //返回的文件句柄;


is_file 文件判断,返回布尔.

2. 关闭文件
fopen //返回的文件句柄
fclose(文件句柄); //释放内存资源
有打开就有关闭.
3. 写入文件
fwrite(文件句柄,字符串);

4. 读取文件内容:
1) 读取一个字符(字节)
fgetc(文件句柄)

对读取到0时的处理:

2) 读取一行字符
fgets

实例图片计时器
<?php
// 图片计数器 // 第一步:对计数器文本文件进行初始化,也就是创建计数器文件,并将0写入
$filename = './count.txt';
if (!file_exists($filename)) {
// 以写入的方法打开,返回文件句柄
$handle = fopen($filename,'w');
// 将0写入
fwrite($handle,0);
// 关闭句柄
fclose($handle);
}
// 第二步:按行 读取 计数器中的数字,同时将数字加1,将新数字写入到计数器文本中
$handle = fopen($filename,'r+');//以r+模式打开文件,由于在此模式下可读可写
$line = fgets($handle); //将计数器中的数字读取,788
$line++; //789
// 将加1后的新数字写入计数器
rewind($handle); //将指针复位
fwrite($handle,$line);//将789写入计数器
fclose($handle); // 第三步:按字符读取 将计数器中的数字,一个一个读取,同时将读取的数字和image目录中的图片名称进行匹配
$handle = fopen($filename,'r');
// 循环一个一个的读取计数器中的数字
while (false !== ($char = fgetc($handle))) {
echo "<img src=images/$char.jpg />";
}
fclose($handle);
?>

3) 读取指定大小的内容,
fread(文件句柄,长度); //说明,长度的单位是字节

feof(文件句柄) //文件的指针在文件的末尾

4) 不用打开和关闭
直接将文件读入字符串 file_get_contents
直接将字符串写入文件 file_put_contents

5. 拷贝文件



5) 删除一个目录中所有子目录及文件
Rmdir //只能删除空目录
Unlink//只能删除文件
删除整个文件夹(里面包含文件)的小例子:
<?php
// 删除一个目录中所有子目录和文件
// rmdir 只能删除文件目录
// unlink
// 定义函数 // $filename = './phpMyAdmin';
// $filename = './phpMyAdmin';
/*function delAll($path){
if (is_dir($path) ){
// 如果是目录则打开
$handle = opendir($path);
// 从目录句柄中循环读取
while (false !== ($file = readdir($handle))) {
// 注意此时的.,..必须跳过,否则将删除你当前文件所在磁盘中的所有文件!!!!!
if ($file=='.'||$file=='..') {
continue;
}
// 如果是目录则递归,如果不是目录则直接unlink
if (is_dir($path.'/'.$file) ){
delAll($path.'/'.$file);
}else{
unlink($path.'/'.$file);
} }
closedir($handle);
rmdir($path);
}
}
// 调用函数
delAll($filename)
?>
还有几个经典练习例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body> <!--
第2题:
题型:代码题
难度:3级
题干:
编写一段程序,递归显示某个指定目录中(如phpMyAdmin)所有子目录及文件。
-->
<?php
$filename = './phpMyAdmin';
function showfiles($path){
$handle = opendir($path);
echo "<ul>";
while (false !== ($file = readdir($handle))){
if ($file =="."|| $file == "..") {
continue;
}
if (is_dir($path.'/'.$file)) {
showfiles($path.'/'.$file);
}else {
echo "<li>$file</li>";
}
}
echo "</ul>";
closedir($handle);
}
showfiles($filename); // 第3题:
// 题型:代码题
// 难度:3级
// 题干:
// 编写一段程序,递归删除某个指定目录中(如phpMyAdmin)所有子目录及文件。
// 提示:在执行删除目录及文件时,一定要过虑掉“.”和“..”,避免删除上层目录中的目录及文件,十分危险。!!!!!!!
$filename = './mytest';
function delfiles($path) {
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file=='.'||$file=='..') {
continue;
}
if (is_dir($path.'/'.$file)) {
delfiles($path.'/'.$file);
}else {
// 删除文件
unlink($path.'/'.$file);
}
}
closedir($handle);
// 删除文件夹
rmdir($path);
} delfiles($filename); // 第4题:
// 题型:代码题
// 难度:3级
// 题干:
// 编写一段程序,用图片来实现访问量效果。当每次进入该页面,访问量加1,访问量值保存到记事本中。读取记事本中访问的数值,并将访问量的每一个数,用对应的图片显示出来。页面最后显示“你是第n位访问者”。
// 提示:参考答案中提供了0到9的数字图片。; $filename = './count.txt';
if (!file_exists($filename)) {
$handle = fopen($filename,'w');
fwrite($handle,0);
fclose($handle);
} $handle = fopen($filename,'r+');
$line = fgets($handle);
$line++;
rewind($handle);
fwrite($handle,$line);
fclose($handle); $handle = fopen($filename,'r');
echo "<span style='color:blue;font-size:30px;font-weight:700'>你是第</span>";
while (false !== ($file=fgetc($handle))) {
echo "<img src=images/$file.jpg />";
}
echo "<span style='color:blue;font-size:30px;font-weight:700'>位访问者!</span>";
fclose($handle); /*
第一题!!!递归应用
复制文件:并且从一个文件夹移动到另一个文件夹*/ $filename = './phpMyAdmin';
// $aimfilename ='./phpMyAdmin_copy';
// $aimfilename ='../student/a/b/c/phpMyAdmin_copy';
function read_copy($dirpath,$aim_path) {
$handle_dir = opendir($dirpath);
while (false !== ($file = readdir($handle_dir))) {
if ($file=='.'||$file=='..') {
continue;
}
if (is_dir($dirpath.'/'.$file)) { //如果是文件夹
if (file_exists($aim_path.'/'.$file)) { //有该文件夹的话
read_copy($dirpath.'/'.$file, $aim_path.'/'.$file);
} else { //没有该文件夹的话
mkdir($aim_path.'/'.$file,0777,true);
read_copy($dirpath.'/'.$file, $aim_path.'/'.$file);
} } else { //如果是文件
if (file_exists($aim_path)) {
copy($dirpath.'/'.$file, $aim_path.'/'.$file);
} else {
mkdir($aim_path,0777,true);
copy($dirpath.'/'.$file,$aim_path.'/'.$file);
} } }
closedir($handle_dir);
}
read_copy($filename,$aimfilename);
?> </body>
</html>
PHP核心编程--目录操作(包含文件操作)的更多相关文章
- paip.c++ qt 目录遍历以及文件操作
paip.c++ qt 目录遍历以及文件操作 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...
- 积累的VC编程小技巧之文件操作
1.删除文件夹 // 删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){ CString path = ...
- C# 目录下的文件操作
运用DirectoryInfo类的对象我们可以轻松的实现对目录以及和目录中的文件相关的操作,假如你要获得某个目录F:\Pictures下的所有BMP文件,那么通过下面的代码就可以实现该功能. 上面的代 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- python-网络安全编程第二天(文件操作)
前言 才吃完火锅嘿嘿,吃完把今天所学的内容写个博客当做笔记用哈哈! 文件操作 f=open("test.txt",w)直接打开一个文件,如果文件不存在则创建文件open模式w:以写 ...
- Linux - 目录结构及文件操作
根目录 “/”:Linux 系统中最高层的目录 这个就是根目录 用 / 表示根目录 bin 目录:存放可执行文件 bin 目录下的文件都是平常使用的命令 在 Linux 系统中,一切都是文件 sbin ...
- Linux目录结构及文件操作
Linux文件目录遵循FHS标准 绝对路径:从根目录开始的路径:相对目录:从当前路径开始的路径 .表示当前目录,..表示上级目录,~表示当前用户的home目录,pwd获得当前绝对路径 新建文件 tou ...
- day4-基础 字符串操作,文件操作,字符转编码
1.字符串用法 name = 'daniel' print(name.capitalize()) #首字母大写 >>>daniel print(name.count('a')) #统 ...
- Go基础--终端操作和文件操作
终端操作 操作终端相关的文件句柄常量os.Stdin:标准输入os.Stdout:标准输出os.Stderr:标准错误输出 关于终端操作的代码例子: package main import " ...
随机推荐
- windows 服务下搭建jsp运行环境
此处搭建的是运行环境,不是开发环境. 1, 下载sdk 并安装 1.8 http://rj.baidu.com/soft/detail/14459.html?ald 2, 配置环境变量 步 ...
- tinyint(1)遇到的坑
一. Mysql查询的boolean结果将输出为0或者1. 比如: select 1=1; 其输出结果为1. 二. 使用一套中间件对kafka消息进行解析为mysql 语句,其中遇到如下的问题, 目标 ...
- Ionic 图片预览ion-slide-box,ion-slide,ion-scroll实现
1.index.html 代码 <body ng-app="starter"> <ion-pane> <ion-header-bar class=&q ...
- vbox搭建centos常用技巧
初始化 :vbox系统网络连接方式用桥接 :ping不通,请修改/etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=no 改成 ONBOOT=yes 然后 ...
- Java中"str1.equals(str2)"和"str1==str2"的区别
大家好,这是我的第一篇博客,作为即将入职的学生,我现在的心情是既好奇又兴奋,对未知的职场生活充满了无限的憧憬,也想赶紧对大学生活say goodbye,因为自己的能力现在还比较有限,我想通过博客这个平 ...
- 匿名/局部内部类访问局部变量时,为什么局部变量必须加final
我们都知道方法中的匿名/局部内部类是能够访问同一个方法中的局部变量的,但是为什么局部变量要加上一个final呢? 首先我们来研究一下变量生命周期的问题,局部变量的生命周期是当该方法被调用时在栈中被创建 ...
- 移动端自动化测试Appium 从入门到项目实战Python版
移动端自动化测试Appium 从入门到项目实战Python版 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...
- Eureka Instance实例信息配置
Eureka包含四个部分的配置 instance:当前Eureka Instance实例信息配置 client:Eureka Client客户端特性配置 server:Eureka Server注册中 ...
- 《数据结构与算法分析——C语言描述》ADT实现(NO.03) : 二叉搜索树/二叉查找树(Binary Search Tree)
二叉搜索树(Binary Search Tree),又名二叉查找树.二叉排序树,是一种简单的二叉树.它的特点是每一个结点的左(右)子树各结点的元素一定小于(大于)该结点的元素.将该树用于查找时,由于二 ...
- 通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile
通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁 ...