- 浏览: 765460 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
#include <unistd.h> #include <stdio.h> #include <dirent.h> #include <string.h> #include <sys/stat.h> #include <utime.h> #include <iostream> using namespace std; #define TIME_CHN_FMT "%Y-%m-%d %H:%M:%S" char* timeToString(time_t tmTime, const char *fmt,char *strTime, int len) { struct tm gmTime; localtime_r(&tmTime, &gmTime); strftime(strTime, (size_t) len, fmt, &gmTime); return strTime; } int removeDir(const char* dirStr) { struct dirent* subPath = NULL; DIR* dir = opendir(dirStr); if(dir==NULL) { cout << "打开目录失败,dir:" << dirStr << endl; return -1; } cout << "删除目录开始,path:" << dirStr << endl; while((subPath=readdir(dir))!=NULL) { if(strcmp(subPath->d_name,".")==0||strcmp(subPath->d_name,"..")==0){ continue; } struct stat statBuf; char subPathStr[256]; bzero(subPathStr,sizeof(subPathStr)); strcpy(subPathStr,dirStr); strcat(subPathStr,"/"); strcat(subPathStr,subPath->d_name); lstat(subPathStr,&statBuf); if(S_ISDIR(statBuf.st_mode)) { removeDir(subPathStr); continue; } char createTime[32],accessTime[32],modifyTime[32]; bzero(createTime,sizeof(createTime)); bzero(accessTime,sizeof(accessTime)); bzero(modifyTime,sizeof(modifyTime)); timeToString(statBuf.st_ctime,TIME_CHN_FMT,createTime,sizeof(createTime)); timeToString(statBuf.st_atime,TIME_CHN_FMT,accessTime,sizeof(accessTime)); timeToString(statBuf.st_mtime,TIME_CHN_FMT,modifyTime,sizeof(modifyTime)); cout << "删除文件:" << subPathStr << ",创建时间:" << createTime << ",最后访问时间:" << accessTime<< ",最后修改时间:" << modifyTime << endl; unlink(subPathStr); } cout << "删除目录结束,path:" << dirStr << endl; rmdir(dirStr); return 0; } int main() { char dirStr[128] = "/home/code/apue_debug/test"; removeDir(dirStr); } 删除目录开始,path:/home/code/apue_debug/test 删除文件:/home/code/apue_debug/test/dirFile,创建时间:2014-08-12 16:02:55,最后访问时间:2014-08-12 16:02:55,最后修改时间:2014-08-12 16:02:55 删除目录开始,path:/home/code/apue_debug/test/subDir 删除文件:/home/code/apue_debug/test/subDir/subDirFile,创建时间:2014-08-12 16:02:59,最后访问时间:2014-08-12 16:02:59,最后修改时间:2014-08-12 16:02:59 删除目录结束,path:/home/code/apue_debug/test/subDir 删除目录结束,path:/home/code/apue_debug/test
发表评论
-
滑动窗口与拥塞控制
2017-09-29 14:47 761滑动窗口:用作流量控制: 1.发送端和接收端各维护一个独立的发 ... -
rawsocket发送tcp包
2017-09-25 11:52 984testTcp.h #ifndef TESTTCP_H ... -
柔性数组
2017-09-20 09:53 509#include <iostream> #i ... -
rawsocket发送dns包
2017-09-14 15:18 616#include <stdio.h> #in ... -
rawsocket发送icmp包
2017-09-06 09:54 664#include <stdio.h> #in ... -
netfilter
2016-10-04 20:31 483http://blog.chinaunix.net/uid-2 ... -
gdb的简单使用
2016-09-19 15:18 418注意编译的时间加上-g参数 1.调试运行 gdb a.out ... -
TCP各状态的意义
2016-03-01 14:06 424各个状态的意义如下: LISTEN - 侦听来自远方TCP端 ... -
log
2015-03-30 17:42 453log.h #ifndef __LOG_H__ #def ... -
TIMEWAIT与CLOSEWAIT
2015-03-17 11:32 661http://blog.csdn.net/kobejayand ... -
TcpClient
2015-01-16 17:46 473TcpClient.h #ifndef TCPCLIENT ... -
信号量
2014-09-26 10:20 685#include <semaphore.h> ... -
共享内存
2014-09-17 10:39 601SharedMemory.h #ifndef SHARED ... -
记录锁
2014-09-11 16:32 440#include <errno.h> #in ... -
popen
2014-09-06 14:50 642#include <stdio.h> #in ... -
大小端存储
2014-09-05 09:29 604#include <stdio.h> i ... -
条件变量(cond)
2014-09-01 11:02 884#include <pthread.h> # ... -
读写锁
2014-09-01 10:33 731#include <pthread.h> # ... -
trylock
2014-09-01 10:07 670#include <pthread.h> # ... -
线程分离
2014-09-01 10:00 696http://www.cnblogs.com/mydomain ...
相关推荐
so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...
编写了一系列递归删除目录和文件的方法,包括条件判断,删除成功与否返回调试信息等,便于初学者理解学习 //递归删除目录和文件 bool removeDir(const QString& dirPath) { QDir dir(dirPath); //QFileInfoList ...
在这个场景中,"递归删除文件或子目录"指的是编写一个程序,它能够遍历并删除指定目录下的所有文件和子目录,包括它们的子孙目录,但会跳过那些被标记为只读属性的文件和目录。这个功能在清理或整理文件系统时非常...
递归删除文件夹 代码简洁易懂
以下是一个使用递归删除目录的实例: ```cpp #include #include #include // 递归删除一个目录 void RecursiveDelete(const std::wstring& strDir) { WIN32_FIND_DATAW findData; HANDLE hFind = ...
在PHP中,递归删除目录与文件的操作主要涉及以下几个知识点: 1. PHP文件操作函数: - `is_dir()`:判断指定路径是否为目录。 - `is_file()`:判断指定路径是否为文件。 - `opendir()`:打开一个目录句柄。 - `...
在本文中,我们将详细介绍PHP中的文件目录操作相关函数,并且分享如何实现一个递归删除目录的自定义函数。 首先,PHP提供了多个内置函数,用于创建和删除目录。最基础的函数是`mkdir()`,用于创建一个新的目录。其...
以下是一个简单的递归删除目录的步骤概览: 1. **基础情况**:当遇到一个空目录时,可以直接删除。 2. **递归情况**:对于非空目录,遍历目录中的每一个条目(文件或子目录)。 3. **递归调用**:如果是子目录,...
在Python编程中,有时我们需要对文件系统进行操作,比如删除文件或目录。...同时,也可以考虑使用`shutil.rmtree()`,这是Python标准库提供的一个功能,同样可以实现递归删除目录,且自带异常处理。
需要注意的是,递归删除目录时应谨慎处理,因为它会永久性地移除数据且无法恢复。在实际应用中,通常会添加安全检查,如确认用户是否具有足够的权限,或者在删除前提供备份选项。 此外,递归删除目录的效率受到系统...
非递归删除目录的方法主要是使用队列和栈来模拟目录结构的遍历过程。首先,我们需要创建一个队列来存储文件和直接子目录,然后使用 while 循环来遍历队列中的每个元素,如果元素是文件,则直接删除,如果元素是目录...
这是一个使用java开发了类,可以递归删除文件目录。
然而,要实现非递归删除非空目录,我们需要更复杂的方法。这通常涉及到遍历目录中的所有子项,先删除文件,再删除子目录,最后删除目标目录自身。这个过程可以使用`FindFirstFile`、`FindNextFile`和`FindClose`函数...
根据提供的代码示例,我们可以进一步了解如何使用VBA(Visual Basic for Applications)编写递归删除目录的程序。 ```vba Option Explicit Private Sub Command1_Click() Dim strPathName As String strPathName ...
在编程领域,递归是一种强大的工具,特别是在处理文件系统操作如删除目录及其包含的所有文件时。这个例子将探讨如何使用递归实现这个功能,主要关注C++编程语言,因为提供的文件列表暗示这是一个C++项目。 首先,让...
1. **递归删除指定类型的文件夹**:在编程中,我们可以编写一个函数,该函数接受一个目录路径和一个文件夹类型作为参数。函数会首先检查当前目录是否是目标类型,如果是,则删除该目录;如果不是,函数会遍历该目录...
使用 `os` 模块和 `os.walk()` 函数可以递归删除目录和文件。例如: ``` import os for root, dirs, files in os.walk('目录路径', topdown=False): for name in files: os.remove(os.path.join(root, name)) ...