热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

递归的创建目录-PHP源码

递归的创建目录
递归创建目录、删除目录

windows api中没有提供现成的多层创建目录、删除目录。这里修改了部分代码实现递归创建目录、删除目录。

//删除目录

bool deletedirectory(char* sdirname)
{
cfilefind tempfind;
char stempfilefind[200] ;

sprintf(stempfilefind,"%s\\*.*",sdirname);
bool isfinded = tempfind.findfile(stempfilefind);
while (isfinded)
{
isfinded = tempfind.findnextfile();

if (!tempfind.isdots())
{
char sfoundfilename[200];
strcpy(sfoundfilename,tempfind.getfilename().getbuffer(200));

if (tempfind.isdirectory())
{
char stempdir[200];
sprintf(stempdir,"%s\\%s",sdirname,sfoundfilename);
deletedirectory(stempdir);
}
else
{
char stempfilename[200];
sprintf(stempfilename,"%s\\%s",sdirname,sfoundfilename);
deletefile(stempfilename);
}
}
}
tempfind.close();
if(!removedirectory(sdirname))
{
return false;
}
return true;
}

// 判断目录是否存在
bool folderexists(cstring s)
{
dword attr;
attr = getfileattributes(s);
return (attr != (dword)(-1) ) &&
( attr & file_attribute_directory);
}

// 创建目录

bool createdir(cstring p)
{
int len=p.getlength();
if ( len <2 ) return false;

if(&#39;\\&#39;==p[len-1])
{
p=p.left(len-1);
len=p.getlength();
}
if ( len <=0 ) return false;

if (len <=3)
{
if (folderexists(p))return true;
else return false;
}

if (folderexists(p))return true;



cstring parent;
parent=p.left(p.reversefind(&#39;\\&#39;) );

if(parent.getlength()<=0)return false;

bool ret=createdir(parent);

if(ret)
{
security_attributes sa;
sa.nlength=sizeof(security_attributes);
sa.lpsecuritydescriptor=null;
sa.binherithandle=0;
ret=(createdirectory(p,&sa)==true);
return ret;
}
else
return false;
}

推荐阅读
  • 本文详细介绍如何在Windows 10教育版中关闭防火墙,包括具体的操作步骤及注意事项。 ... [详细]
  • Eclipse 中 Maven 的基础配置指南
    本文详细介绍了如何在 Eclipse 环境中配置 Maven,包括环境变量的设置、Maven 插件的安装与配置等关键步骤,旨在帮助开发者顺利搭建开发环境。 ... [详细]
  • 导入大csv文件到mysql(CSV导入) ... [详细]
  • 精选Unity开源项目:UniRx实现响应式编程
    本文介绍了Unity中的响应式编程框架——UniRx,探讨了其在解决异步编程难题中的应用及优势。 ... [详细]
  • ECharts 基础使用指南
    本文档提供了一个简单的 ECharts 使用示例,帮助初学者快速了解如何在网页中集成和使用 ECharts 创建图表。更多详细信息请参阅官方文档:https://www.echartsjs.com/zh/tutorial.html#5%20分钟上手%20ECharts ... [详细]
  • 本文详细探讨了函数与对象方法的主要区别,包括它们的定义方式、调用规则以及在面向对象编程语言中的应用特点。 ... [详细]
  • 本文介绍了ADB(Android Debug Bridge)的基本概念、安装方法、环境配置、连接真机步骤以及常用命令和高级技巧。ADB是一个强大的工具,适用于Android设备的开发和调试。 ... [详细]
  • NFC OMA 接口访问优化
    本文探讨了NFC设备中OMA接口的访问方式,特别是针对IC制造商提供的NFC swp-sim访问与NFC服务提供商对eSe(嵌入式安全元件)访问的不同处理方法。文中提出了几种解决方案以解决由此产生的双SmartcardService运行问题。 ... [详细]
  • Linux环境下Redmine快速搭建指南
    本文将详细介绍如何在Linux操作系统中使用Bitnami Redmine安装包快速搭建Redmine项目管理平台,帮助读者轻松完成环境配置。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • Windows证照之星更换服装教程
    本文将详细介绍如何使用Windows证照之星软件更换照片中的服装,适合需要制作证件照的用户参考。方法简便易行,效果自然。 ... [详细]
  • 深入理解Java NIO:基础概念与原理
    本文介绍了Java NIO(New Input/Output)的基本概念,包括同步与异步、阻塞与非阻塞等核心理念,以及NIO相对于传统IO的优势和应用场景。通过详细解析这些概念,帮助读者更好地理解和掌握NIO的使用。 ... [详细]
  • 作为一名计算机科学专业的大三学生,我在过去的一年里自学了Visual Basic (VB),但感觉进展缓慢。VB的学习是否仅仅局限于控件的使用?如何有效地学习API?此外,有人认为Basic语言已经过时,这对VB的未来意味着什么? ... [详细]
  • 针对上一期关于 Windows 8 的问题,我们正在积极解决。本文提供 IE6,7,8 三个版本的单文件版下载,适用于 Windows Vista/7 系统,支持 x86 和 x64 架构。欢迎大家下载并分享。 ... [详细]
  • 本问题涉及对一个非负整数数组执行加一操作。数组以最高位数字在前的方式存储,每个数组元素仅包含一位数字。假设该整数没有前导零,除非该整数为0。 ... [详细]
author-avatar
张明怡紫茂佳尧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有