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 " ...
随机推荐
- vue 生产环境和测试环境的配置
我们引用的是axios 给src目录增加 api 文件夹 里面写上index.js // 配置API接口地址 var root = process.env.API_ROOT // 引用axios va ...
- Bash 常用快捷方式
从历史中执行命令 ctrl +r 搜索历史命令记录 !$ 重复上一个命令参数 文本编辑的快捷方式 c 分别更改这些配对标点符号中的文本内容 di 分别删除这些配对标点符号中的文本内容 do ...
- js/jquery判断一个对象是否为空
一.js判断一个对象是否为空对象 1)通过JSON自带的.stringify方法来判断 //JSON自带的stringify方法,将json转成json字符串 var c = {}; if(JSON. ...
- 微信小程序——简易动画案例
wxml: <view class="container"> <view animation="{{animation}}" class=&q ...
- 19-10-26-F
ZJ一下: T1码了暴力但是并没有开出来身高的神奇性质…… T2打模拟,但是只摸了卅分 T3不会,码了一个测试点分治.10分 TJ一下: T1. 发现身高范围在$[140,200]$时,直接去重跑$\ ...
- 【DM8168学习笔记4】ezsdk安装过程记录
安装文件 ezsdk_dm816x-evm_5_05_02_00_setuplinux DM8168-EZSDK文件结构如图所示. (图片来自:http://process ...
- 关于解码芯片SAA7115及7105的配置 ,FVID与微驱动
最近因为在做视频处理,所以和解码芯片打交道很多,根据DM642的例程总了一些应该配置的东西. 注:以下的配置均是指AV信号输入,PAL制式输出的条件 (一)关于SAA7115(基于TI的驱动) 结构体 ...
- javascript date utc
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/37503465 近期在使用highsto ...
- webServices学习四(---WebService监听工具)
之前我们使用过HttpWatch获取的HTTP的调用过程,并获得了HTTP的请求头及其他请求的详细信息. 既然WebServie也是通过HTTP进行通信的,能不使用HTTPWatch来获取它的请求过程 ...
- StopWatch 监控Java代码运行时间和分析性能
背景 有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进 ...