【app】遍历目录所有文件
遍历目录所有文件
原创,转载时请注明,谢谢。邮箱:tangzhongp@163.com
博客园地址:http://www.cnblogs.com/embedded-tzp
Csdn博客地址:http://blog.csdn.net/xiayulewa
Linux C : readdir
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
int main(){
DIR *dir_p = opendir("/");
if(dir_p == NULL) perror("opendir"), exit(-1);
struct dirent *ent;
while(1){
ent = readdir(dir_p);
if(ent == NULL) break;
//打印子项类型和子项名
if( 0 == strcmp(ent->d_name, ".")
|| 0 == strcmp(ent->d_name, "..")){
continue;
}
printf("%d, %s\n", ent->d_type, ent->d_name);
//type == 4 是目录,其他是文件
}
}
Linux C: scandir
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int dir_printall(const char *pathname)
{
struct dirent **namelist = NULL;
int ent_n;
int i;
ent_n = scandir(pathname, &namelist, NULL, alphasort);
if (ent_n < 0){
printf("scandir() fail : %s\n", pathname);
return -1;
}
for(i = 0; i < ent_n; i++){
if( 0 == strcmp(namelist[i]->d_name, ".")
|| 0 == strcmp(namelist[i]->d_name, "..")){ // skip parent dir and self
continue;
}
char path_buf[512] = {0}; // use malloc will be bettor
sprintf(path_buf, "%s/%s", pathname, namelist[i]->d_name);
printf("%s\n", path_buf);
if(4 == namelist[i]->d_type){ // 4 means dir
int retval = dir_printall( path_buf); // recurrence call
if(-1 == retval){
fprintf(stderr, "dir_printall() fail: %s\n", path_buf);
continue;
//goto out; // not end, for /proc/5236/net can't
}
}
}
out:
for(i = 0; i < ent_n; i++){
if(namelist[i]){
free(namelist[i]);
namelist[i] = NULL;
}
}
if(namelist){
free(namelist);
namelist = NULL;
}
return 0;
}
int main(void)
{
if (-1 == dir_printall("/")){
perror("dir_printall()");
}
return 0;
}
C++
shell
#带完整路径
file=$(find ./)
echo $file
#只有文件名
file=$(ls -R)
echo $file
qt
自己做的项目中拷贝出来的一段简化的代码。
bool SearchThread::createDb()
{
qDebug() << __LINE__ << __FUNCTION__;
QFileInfoList fileDriveList = QDir::drives(); // 获取盘符,windows下为c:, d:, e:, linux下为 /
foreach(QFileInfo fileDrive, fileDriveList){ // 循环处理盘符
qDebug() << fileDrive.absoluteFilePath();
createDb(fileDrive.absoluteFilePath());
}
return true;
}
bool SearchThread::createDb(const QString &filePath)
{
QDir dir = filePath;
const QDir::Filters FILTERS = QDir::AllDirs | QDir::Files | QDir::Drives
| QDir::NoDotAndDotDot | QDir::Hidden | QDir::System;
QFileInfoList fileInfoList = dir.entryInfoList(FILTERS, QDir::DirsFirst | QDir::Name);
foreach(QFileInfo fileInfo, fileInfoList){
bool isdir = fileInfo.isDir();
if(isdir){
if(!fileInfo.isSymLink()){ // 不是链接文件,防止死循环
createDb(fileInfo.absoluteFilePath());
}
}
}
return true;
}
【app】遍历目录所有文件的更多相关文章
- Linux下遍历目录及文件,更改权限
Linux下遍历目录及文件,更改权限 引言: 我在Linux下搭建android时,将eclipse及sdk复制到/usr/下时,总会出现无法读,无法写写样的问题. 解决方案: 有两个方案: 一.将复 ...
- php遍历目录下文件,并读取内容
<?php echo "<h2>遍历目录下文件,并读取内容</h2><br>\n"; function listDir($dir) { i ...
- dos下遍历目录和文件的代码(主要利用for命令)
对指定路径指定文件进行遍历的程序,这里有多个批处理代码,但运行好像有些问题,大家可以根据需要选择 ===== 文件夹结构 ======================================= ...
- File类遍历目录及文件
1. 构造函数 File(String args0)//使用一个表示文件或目录的路径的字符串创建一个File对象 File(URL args0)//使用一个URL对象创建File对象 File(Fil ...
- dos下遍历目录和文件的代码(主要利用for命令)(转)
===== 文件夹结构 ============================================= D:\test ---A Folder 1 |-----A file 1.txt | ...
- php遍历目录与文件夹的多种方法详解
遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴.下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋 ...
- Win32下C++遍历目录和文件的源码
#include<windows.h> #include<iostream> #include<string> using namespace std; //只能处 ...
- PHP遍历目录和文件及子目录和文件
正常直接使用opendir方法,就可以读到所有的目录和文件 文件可以直接记录下来,目录则需要再进一步获取里边的文件信息 也就是,如果当前读出来是目录,则需要再次调用函数本身(递归),直到没有目录 循环 ...
- linux c 遍历目录及文件
#include <dirent.h>void recovery_backend() { DIR * pdir ; struct dirent * pdirent; struct stat ...
随机推荐
- 数据库迁移(SQL SERVER导入数据到MySql)
地址:http://blog.csdn.net/jiaohougenyang/article/details/44937801 背景:项目最开始时使用的是SQL Server数据库,业务需求现要将数据 ...
- 【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素
1. select 和 selectAll 的区别 在 D3 中,选择元素的函数有两个:select 和 selectAll,它们的使用非常重要.先说明一下它们的区别: select 是选择所有指定元 ...
- 1.unix网络编程基础知识
接触网络编程一年多了,最近在系统的学习vnp两本书,对基础知识做一些总结,希望理解的更透彻清晰,希望能有更多的沉淀. 1.套接口地址 针对IPv4和IPv6地址族,分别定义了两种类型的套接口地址:so ...
- 135实例——add_4
自我检讨,基础太差了.找了一本135个实例的pdf文档,一个个往后面编吧,希望能巩固一下基础 //date : 2013/8/19 //designer :pengxiaoen //function ...
- docker学习笔记14:Dockerfile 指令 ENV介绍
ENV指令用来在镜像构建过程中设置环境变量.我们来看一个Dockerfile的例子: #test FROM ubuntu MAINTAINER hello ENV MYDIR /mydir RUN m ...
- UVALive 5797 In Braille
题目 比赛总结 题意:给出1-9的盲文,每种盲文都是2×3的点阵,有些点是凸起的用*表示,其余的用.表示.要进行两种操作,1 把盲文变成数字,2 把数字变成盲文 解法:按规则模拟....注意读入的每个 ...
- HDU 4883 TIANKENG’s restaurant (贪心)
链接:pid=4883">带我学习.带我飞 第一次BC,稳挂,WA n多次.今天又一次做了一下 略挫 #include <iostream> #include <cs ...
- 两个activity之间的数据传递
1.清单文件第二个activity<activity android:name="com.example.twodatapass.ResultActivity" androi ...
- WinForm - 格式化DataGridView单元格数据
效果: 代码: /// <summary> /// 格式化数据 /// </summary> private void dataGridView1_CellFormatting ...
- BZOJ 1110: [POI2007]砝码Odw( 贪心 )
ORZjcvb... #include<bits/stdc++.h> using namespace std; ; int N, M, item[maxn], V[maxn]; vecto ...