php 关于文件夹的一些封装好的函数
/**
*检测文件名是否合法
* @param string $filename
* @return boolean
*/
function checkFilename($filename){
$pattern = "/[\/,\*,<>,\?\|]/";
if (preg_match ( $pattern, $filename )) {
return false;
}else{
return true;
}
}
<?php
//打开指定目录
/**
* 遍历目录函数,只读取目录中的最外层的内容
* @param string $path
* @return array
*/
function readDirectory($path) {
$handle = opendir ( $path );
while ( ($item = readdir ( $handle )) !== false ) {
//.和..这2个特殊目录
if ($item != "." && $item != "..") {
if (is_file ( $path . "/" . $item )) {
$arr ['file'] [] = $item;
}
if (is_dir ( $path . "/" . $item )) {
$arr ['dir'] [] = $item;
} }
}
closedir ( $handle );
return $arr;
}
//$path="file";
//print_r(readDirectory($path)); /**
* 得到文件夹大小
* @param string $path
* @return int
*/
function dirSize($path){
$sum=0;
global $sum;
$handle=opendir($path);
while(($item=readdir($handle))!==false){
if($item!="."&&$item!=".."){
if(is_file($path."/".$item)){
$sum+=filesize($path."/".$item);
}
if(is_dir($path."/".$item)){
$func=__FUNCTION__;
$func($path."/".$item);
}
} }
closedir($handle);
return $sum;
}
//$path="file";
//echo dirSize($path); function createFolder($dirname){
//检测文件夹名称的合法性
if(checkFilename(basename($dirname))){
//当前目录下是否存在同名文件夹名称
if(!file_exists($dirname)){
if(mkdir($dirname,0777,true)){
$mes="文件夹创建成功";
}else{
$mes="文件夹创建失败";
}
}else{
$mes="存在相同文件夹名称";
}
}else{
$mes="非法文件夹名称";
}
return $mes;
}
/**
* 重命名文件夹
* @param string $oldname
* @param string $newname
* @return string
*/
function renameFolder($oldname,$newname){
//检测文件夹名称的合法性
if(checkFilename(basename($newname))){
//检测当前目录下是否存在同名文件夹名称
if(!file_exists($newname)){
if(rename($oldname,$newname)){
$mes="重命名成功";
}else{
$mes="重命名失败";
}
}else{
$mes="存在同名文件夹";
}
}else{
$mes="非法文件夹名称";
}
return $mes;
} function copyFolder($src,$dst){
//echo $src,"---",$dst."----";
if(!file_exists($dst)){
mkdir($dst,0777,true);
}
$handle=opendir($src);
while(($item=readdir($handle))!==false){
if($item!="."&&$item!=".."){
if(is_file($src."/".$item)){
copy($src."/".$item,$dst."/".$item);
}
if(is_dir($src."/".$item)){
$func=__FUNCTION__;
$func($src."/".$item,$dst."/".$item);
}
}
}
closedir($handle);
return "复制成功"; } /**
* 剪切文件夹
* @param string $src
* @param string $dst
* @return string
*/
function cutFolder($src,$dst){
//echo $src,"--",$dst;
if(file_exists($dst)){
if(is_dir($dst)){
if(!file_exists($dst."/".basename($src))){
if(rename($src,$dst."/".basename($src))){
$mes="剪切成功";
}else{
$mes="剪切失败";
}
}else{
$mes="存在同名文件夹";
}
}else{
$mes="不是一个文件夹";
}
}else{
$mes="目标文件夹不存在";
}
return $mes;
} /**
* 删除文件夹
* @param string $path
* @return string
*/
function delFolder($path){
$handle=opendir($path);
while(($item=readdir($handle))!==false){
if($item!="."&&$item!=".."){
if(is_file($path."/".$item)){
unlink($path."/".$item);
}
if(is_dir($path."/".$item)){
$func=__FUNCTION__;
$func($path."/".$item);
}
}
}
closedir($handle);
rmdir($path);
return "文件夹删除成功";
}
php 关于文件夹的一些封装好的函数的更多相关文章
- [No0000DC]C# FileHelper 本地文件、文件夹操作类封装FileHelper
using System; using System.Diagnostics; using System.IO; using System.Text; using Shared; namespace ...
- Web 在线文件管理器学习笔记与总结(10)查看文件夹中的内容
① 读取文件夹大小 a. 封装计算文件夹大小的函数 b. 打开文件夹 c. 循环判断文件夹下的内容是文件还是文件夹,如果是文件,则累积相加文件的大小:如果是文件夹,则递归调用该函数 注意两个问题: ...
- VC如何得到一个文件夹的路径
VC中没有现成的函数来选择一个文件夹,但这是经常会用到的,怎么办?自动动手,丰衣足食! 使用SHBrowseForFolder,代码如下: #include int SelFolder(HWND ...
- android打开文件、保存对话框、创建新文件夹对话框(转载)
转载地址:点击打开 这是一个简单的只有3个按钮的程序,3个按钮分别对应三种工作的模式(保存.打开和文件夹选择).封装的SimpleFileDialog.java的内容如下: package com.e ...
- MFC 中 删除一个非空文件夹
MFC中提供了删除文件夹的一个封装函数 RemoveDirectory(LPCTSTR lpPathName),我们只要把要删除的文件夹的路径传进去就可以删除了,貌似一切如此简单.我象征性的建立一个文 ...
- Windows内核开发中如何区分文件对象究竟是文件还是文件夹?
今天有同行问了一个问题,Windows文件过滤驱动里的如何去区分一个对象是文件还是文件夹?我花了1小时左右翻阅了一些微软的文档以及以前的遗留代码,发现在WDK的帮助文档中是这么定义的: FILE_OB ...
- Java文件及文件夹的创建与删除
功能 这个实例实现了在D盘创建一个文件和文件夹,并删除它们. 函数介绍 createNewFile():当文件不存在时,根据绝对路径创建该文件. delete():删除文件或者文件夹. ...
- 利用python实现两个文件夹的同步
其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了. WINDOWS : xcopy 源文件夹\* 目标文件夹 /s /e /y Linux : ...
- 使用javascript来访问本地文件夹
常用的.net 的aspx文件由于运行在服务器端,并不具有访问用户本地文件夹的权限,导致类似于<a href="file:///d:/backup" > open fo ...
随机推荐
- How to map Actions to a certain RibbonPage and RibbonGroup using the Application Model or in code
https://www.devexpress.com/Support/Center/Question/Details/S134617/how-to-map-actions-to-a-certain-r ...
- String与Date的互相转换
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 也可以: SimpleDateFormat sd ...
- 树莓派修改VNC分辨率
1.打开终端输入 sudo raspi-config 2. 选择 Advanced Options 再选择 Resolution 3.选择想要的分辨率,确定 4.重启
- flask中的简单的前端写入
那么flask这个框架是web开发,那么肯定离不开前端的一些代码,那么python用的web开发框架 开发所用的前端模板就是jinja2模板.相对于jinja1比起来性能做到了很大的提升,那么Vue一 ...
- 论文阅读 | Formalizing Visualization Design Knowledge as Constraints: Actionable and Extensible Models in Draco
1. Introduction 程序员编写的可视化图表与专家眼中的设计标准总存在差距.我们无法每次都向可视化专家咨询设计上的意见,所以我们需求将设计标准,研究成果应用于自动化设计工具的正式框架,这些工 ...
- UnityShader学习笔记1 — — 入门知识整理
注:资料整理自<Unity Shader入门精要>一书 一.渲染流程概念阶段: 应用阶段:(1)准备好场景数据:(如摄像机位置,物体以及光源等) (2)粗粒度剔除(Culling): ...
- docker私服搭建nexus3
docker私服搭建有官方的registry镜像,也有改版后的NexusOss3.x,因为maven的原因搭建了nexus,所以一并将docker私服也搭建到nexus上. nexus的安装过程就单独 ...
- CentOS7下,防火墙设置
CentOS中防火墙程序主要是firewall和iptables两种. CentOS7中firewall服务已经默认安装好了,而iptables服务需要自己用yum install iptabes- ...
- smash:一个类unix内核
前言 每一个蹩脚的C++程序员都有一颗做操作系统内核的心.我从大学毕业开始就对操作系统内核感兴趣,将其看作是术之尽头,可惜那时候一直在无忧无虑的忙着玩网游,也就搁置了.随着时间的推移,逐渐就将其淡忘了 ...
- POJ 3468 A Simple Problem with Integers(分块入门)
题目链接:http://poj.org/problem?id=3468 A Simple Problem with Integers Time Limit: 5000MS Memory Limit ...