PHP之基本目录操作
一、创建目录
mkdir ($pathname, $mode = 0777, $recursive = false, $context = null)
- $pathname: 目录路径
- $mode : 目录权限
- $recursive : 递归
二、删除目录
rmdir ($dirname, $context = null)
- $dirname: 目录路径
三、读取目录内容
步骤:
3.1、打开目录,获取文件句柄
$fin = opendir($path);
var_dump($fin);
resource(2) of type (stream)
3.2、读取内容
while (false !== ($dir_name = readdir($dir_handler)))
如果读取内容不为空,继续读取
3.3、关闭文件句柄
closedir($dir_handler);
用于释放资源
四、递归之目录结构
4.1、读取目录结构
4_1代码:
$path = '../secshop_upload';//目录或者文件路径
recursiveDir($path);
function recursiveDir($pathname, $depth = 0) {
$dir_handler = opendir($pathname);
while (false !== ($dir_name = readdir($dir_handler))) {
if ($dir_name == '.' || $dir_name == '..') continue;
echo str_repeat('-', $depth).$dir_name . '<br />';
if (is_dir($pathname.DIRECTORY_SEPARATOR.$dir_name)) recursiveDir($pathname.DIRECTORY_SEPARATOR.$dir_name, $depth +1);
}
closedir($dir_handler);
}
结果:
application
-back
--controller
---GoodsController.class.php
---LoginController.class.php
---ManageController.class.php
---PlatformController.class.php
--model
---AdminModel.class.php
---GoodsModel.class.php
--view
...
4.2、获取目录结构嵌套数组
$path = '..'.DIRECTORY_SEPARATOR.'secshop_upload';//目录或者文件路径
$arr = recursiveDir($path);
echo '<pre>';
var_dump($arr);
echo '</pre>';
/**
* @param $pathname 目录路径
* @return array 嵌套数组:递归遍历目录内容存入数组
*/
function recursiveDir($pathname) {
$nested_arr = array();//存放当前目录下内容 f
$index = 0;
$dir_handler = opendir($pathname);//打开目录,获取文件句柄
while (false !== ($dir_name = readdir($dir_handler))) {//循环读取目录内容
if ($dir_name == '.' || $dir_name == '..') continue;//'.' 和'..'为逻辑目录
$nested_arr[$index]['filename'] = $dir_name;//‘filename'目录或者文件名
if (is_dir($pathname.DIRECTORY_SEPARATOR.$dir_name)) {
$nested_arr[$index]['type'] = 'DIR';//type 类型: DIR 目录;FILE 文件
//nested 子目录内容数组
$nested_arr[$index]['nested'] = recursiveDir($pathname.DIRECTORY_SEPARATOR.$dir_name);
}else {
$nested_arr[$index]['type'] = 'FILE';
}
$index++;
}
closedir($dir_handler);//关闭文件句柄,是否资源
return $nested_arr;//目录内容数组返回
}
结果:
array(6) {
[0]=>
array(3) {
["filename"]=>
string(11) "application"
["type"]=>
string(3) "DIR"
["nested"]=>
array(4) {
[0]=>
array(3) {
["filename"]=>
string(4) "back"
["type"]=>
string(3) "DIR"
["nested"]=>
array(3) {
[0]=>
array(3) {
["filename"]=>
string(10) "controller"
["type"]=>
string(3) "DIR"
["nested"]=>
array(4) {
[0]=>
array(2) {
["filename"]=>
string(25) "GoodsController.class.php"
["type"]=>
string(4) "FILE"
}
五、中文路径
iconv ($in_charset, $out_charset, $str)
- $in_charset: The input charset
- $out_charset: output charset
- $str : 要转换的字符串
通过字符集转换,解决乱码等问题
PHP之基本目录操作的更多相关文章
- 【C#公共帮助类】FTPClientHelper帮助类,实现文件上传,目录操作,下载等动作
关于本文档的说明 本文档使用Socket通信方式来实现ftp文件的上传下载等命令的执行 欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利. 本人自从几年前走上编程之路,一直致力于收集 ...
- liunx学习(一):linux下目录操作大全
Linux C函数之文件及目录函数(全):http://blog.sina.com.cn/s/blog_695e489c01013ldd.html linux目录操作发:http://www.cnbl ...
- Java基础知识系列——目录操作
Java对目录操作的许多方法与上一篇文件操作的方法很多是一样的. java.io.File file = new File( "D:\1\2\3\4"); 1.递归创建目录 fil ...
- Python目录操作
Python目录操作 os和os.path模块os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回但前目录('.') ...
- PHP 文件与目录操作函数总结
>>>文件操作 打开 fopen(); 打开文件 读取内容 fread(); 从文件指针 handle 读取最多 length 个字节 readfile(); 读入 ...
- Python::OS 模块 -- 文件和目录操作
os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...
- Matlab命令系列之目录操作
Matlab命令系列之目录操作 filesep 用于返回当前平台的目录分隔符,Windows是反斜杠(),Linux是斜杠(/).有时此命令结合ispc命令使用,可以灵活的设置目录分割符. fullf ...
- Matlab命令——目录操作(windows&Linux)
Matlab命令——目录操作(windows&Linux) 1. filesep用于返回当前平台的目录分隔符,Windows是反斜杠(\),Linux是斜杠(/).有时此命令结合ispc命令使 ...
- 【Linux C中文函数手册】之 目录操作函数
目录操作函数 1)closedir 关闭目录 相关函数: opendir表头文件: #include<sys/types.h> #include<dirent.h>定义函数: ...
- OC7_目录操作
// // main.m // OC7_目录操作 // // Created by zhangxueming on 15/6/19. // Copyright (c) 2015年 zhangxuemi ...
随机推荐
- python import error:no module named yaml
解决办法: python2 : sudo apt-get install python-yaml python3 : sudo apt-get install python3-yaml
- 多重背包(dp专题)
题目大意:输入n,代表有n种数,接下来n个数代表n种数,再接下来n个数代表每种数有多少个,在输入K,代表用这些数要加成的和 问你是否能加为K,能输出yes,不能输出no 这是一个典型的多重背包问题,可 ...
- POJ 1556 E - The Doors
题意:给定n堵墙,现在要你从(0,5)走去(10,5)的最短距离 思路:刚开始还想模拟,就是从(0,5)走,每次x向右一格,然后判断有没和线段相交就可以.但是它的们有可能是小数形式给出的,这样就GG了 ...
- JVM基础知识2 垃圾收集器与内存分配策略
如何判断堆中的哪些对象可以被回收 主流的程序语言都是使用根搜索算法(GC Roots Tracing)判定对象是否存活 基本思路是:通过一系列名为“GC Roots”的对象作为起点,从这些节点开始向下 ...
- Git把旧仓库的分支拉到新仓库中
背景:项目新建了个git仓库(B仓库),放改版的新项目,现在运维所有项目构建都是在一个Jenkins里构建,然后拉镜像到相应服务器里,为了不让运维每次构建不同项目需要改git仓库地址,需要把原来项目仓 ...
- 白话SpringCloud | 第零章:前言
说在前面 大清早醒来,觉得睡不着了.还是起来,写写博客.但最后发现关于SpringBoot的安全相关的还是比较多内容的,也比较专业,怕是一个多小时完不成的,也罢,那就来写写关于SpringCloud前 ...
- springboot相关的pom依赖文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- win7,docker安装后,创建虚拟机分配不了ip错误 err: exit status 255
问题 win7装docker真麻烦,不如家里的win10爽.另外明明这是个很简单的操作,但是国内的解决方法有点落后,所以我写了个傻瓜式的. 有兴趣的可以直接看issue https://github. ...
- Fiddler 抓包工具总结(转)
Fiddler 抓包工具总结 阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). Au ...
- RStudio Server-0.99.902 (OpenLogic CentOS 7.2)
RStudio Server-0.99.902 (OpenLogic CentOS 7.2) 0 评论 平台: CentOS 类型: 虚拟机镜像 软件包: r-3.2.3 rstudio-server ...