技术标签: java android android studio Android
一、C语言 readdir函数用来读取指定的目录流的目录项到一个dirent结构体指针中,并将读取指针设置为下一个目录项的位置。
二、结构dirent体定义如下:
struct dirent
{
ino_t d_ino; //d_ino 此目录进入点的inode
ff_t d_off; //d_off 目录文件开头至此目录进入点的位移
signed short int d_reclen; //d_reclen _name 的长度, 不包含NULL 字符
unsigned char d_type; //d_type d_name 所指的文件类型 d_name 文件名
har d_name[256];
};
三、返回值:成功则返回下个目录进入点. 有错误发生或读取到目录文件尾则返回NULL.
四、测试程序
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
/************************************************
enum
{
DT_UNKNOWN = 0, //未知类型
# define DT_UNKNOWN DT_UNKNOWN
DT_FIFO = 1, //管道
# define DT_FIFO DT_FIFO
DT_CHR = 2, //字符设备
# define DT_CHR DT_CHR
DT_DIR = 4, //目录
# define DT_DIR DT_DIR
DT_BLK = 6, //块设备
# define DT_BLK DT_BLK
DT_REG = 8, //常规文件
# define DT_REG DT_REG
DT_LNK = 10, //符号链接
# define DT_LNK DT_LNK
DT_SOCK = 12, //套接字
# define DT_SOCK DT_SOCK
DT_WHT = 14 //链接
# define DT_WHT DT_WHT
};
************************************************/
int main(int argc , char* argv[])
{
DIR * dir;
struct dirent * ptr;
int i;
dir = opendir("rk3566");
while((ptr = readdir(dir)) != NULL)
{
printf("d_name : %s\n", ptr->d_name);
if (ptr->d_type == DT_REG) {//Ignore directories and only process regular files
printf("this is a regular file\n");
}
}
closedir(dir);
return 0;
}
五、运行结果,通过d_type DT_REG可以知道是目录还是常规文件。。
xxx@ubuntu-xx:~/tmp$ ls -a rk3566/
. bionic .classpath development javaenv.sh mkcombinedroot platform_testing RKDocs system vendor
.. bootable compatibility device kernel mkimage_ab.sh prebuilts rkst test
10.txt bootstrap.bash cts external libcore mkimage.sh .repo RKTools toolchain
Android.bp build dalvik frameworks libnativehelper packages restore_patches.sh rockdev tools
art build.sh developers hardware Makefile pdk rkbin sdk u-boot
xxx@ubuntu-xx:~/tmp$ gcc -o readdir_test readdir_test.c
xxx@ubuntu-xx:~/tmp$ ./readdir_test
d_name : u-boot
d_name : restore_patches.sh
this is a regular file
d_name : compatibility
d_name : prebuilts
d_name : .repo
d_name : rockdev
d_name : packages
d_name : platform_testing
d_name : Android.bp
d_name : hardware
d_name : test
d_name : system
d_name : sdk
d_name : javaenv.sh
this is a regular file
d_name : development
d_name : RKDocs
d_name : Makefile
this is a regular file
d_name : bootable
d_name : mkcombinedroot
d_name : art
d_name : frameworks
d_name : cts
d_name : rkst
d_name : bionic
d_name : dalvik
d_name : .
d_name : 10.txt
this is a regular file
d_name : .classpath
this is a regular file
d_name : ..
d_name : tools
d_name : developers
d_name : rkbin
d_name : mkimage_ab.sh
this is a regular file
d_name : mkimage.sh
this is a regular file
d_name : libnativehelper
d_name : build.sh
this is a regular file
d_name : kernel
d_name : external
d_name : toolchain
d_name : device
d_name : bootstrap.bash
d_name : pdk
d_name : RKTools
d_name : build
d_name : vendor
d_name : libcore
xxx@ubuntu-xx:~/tmp$
六、实际使用场景,解析指定目录的下的所有rc后缀的文件。
七、参考文章
文章浏览阅读942次。string connectionString = “Server=127.0.0.1;Port=5432;Database=myDataBase;User Id=myUsername;Password=myPassword;”;NpgsqlConnection conn = new NpgsqlConnection(connectionString);conn.Open();C#连接Po..._npgsql.dll和mono.security.dll下载
文章浏览阅读49次。(安装前提:httpmysqlphp已安装,如果没有安装,使用yuminstallhttp*mysql*php*)1、下载所需的安装包安装cacti需要以下几个软件的支持Cacti、rrdtool、net-snmpCacti下载地址:http://www.cacti.net/我下载的是cacti-0.8.8a.tar.gzrrdtool和net-snmp直接使用..._下载cacti-0.8.8a.tar.gz安装包
文章浏览阅读212次。轻量级网络库Libevent对高效的I/O进行了封装,提供统一的API,我们调用API就会很方便,要搞清楚每个API背后的操作。 什么是高效的I/O??? 如Linux中独有的epoll,windows的IOCP,BSD的Kqueque我使用的是libevent2.0.21版本, Libevent2.0版本以后提供了buffere..._libevent粘包处理
文章浏览阅读1.8k次。广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!处理数据的 pandas,绘制可视图的 matplotlib,生成交互图的 bokeh,实现机器学习的 scikit-learn 等等,python 数据分析师早就能把这些工具用得出神入化了。 但今天呆鸟要和大家聊一聊 python 数据分析报告的痛点。 ----用 python 做..._python数据分析论文
文章浏览阅读270次。搭建vue项目准备项目创建准备你需要安装nodejs,如已安装,请跳过。项目创建Install Vue CLI, 如果尚未安装npm install --global @vue/cli@next --registry=https://registry.npm.taobao.org2.创建一个新项目, 选择 “Manually select features” 选项vue create my-project-name如果已经有一个不存在TypeScript的 Vue CLI项目,请添_vue项目使用什么语言写
文章浏览阅读4.7k次,点赞5次,收藏6次。前几天在知乎上,刷到这么一个问题鉴于有不少人看了我的blog给我私信一些职业规划相关的问题,讨论很多的就是担心自己年龄是否还适合转行。 于是决定静心下来码了一篇回答,同时搬到博客园来供大家消遣。。。--------------------------下面是原文-----------------------------先说结论,大龄青年不建议转行学IT,因为你已经..._32岁转行编程
文章浏览阅读111次。Activiti是什么当你打开这篇博客时,说明你还不知道Activiti是什么,那么工作流引擎对你来说也是新的概念,我这里不去copy百度百科了,简单说Activiti是一个开源的自动化业务工作引擎,担有一点不要和Android的Activity搞混了。为什么使用工作流引擎简单来说,当你在复杂的业务流程中过多的使用if…else那是超级崩溃的,我不知道你们有没有这样的经历,我曾经在一个..._activiti6.0 database执行语句
文章浏览阅读2.9k次,点赞12次,收藏67次。山东大学计算机组成与设计实验六二进制补码加法器实验,山东大学计算机组成与设计实验,山东大学计算机组成与设计实验报告,计算机组成原理实验报告,山东大学计算机组成原理实验报告。_补码加法器实验报告
文章浏览阅读1.5w次。一般情况下,RPGMaker都是单机游戏,单机游戏必然会涉及到存档,本文我们就来聊一聊RPGMakerMV的存档。 探秘系列的第一篇我们已经介绍,引擎存档位置在save目录下。 其实新建项目时,是不存在save目录的,当进行存档时,才会新建save目录。 不使用插件的情况下,存档位置有20个,如果超过了20就只能覆盖之前的存档。当我进行首次存档时(选的第一个存档位置)..._安卓黄油存档位置
文章浏览阅读2.9k次。# encoding: utf-8'''===================================================@Project -> File : qt5003 -> QLineEditValidator.py@IDE : qt5003@Author : Mr. Batac@Date ..._pyqt5 限制文本框字数
文章浏览阅读575次。_温补而知新
文章浏览阅读398次。代码如下:< script type = "text/javascript" >var flag = "flag ")%>";if (flag != "true") {flag = false;} else {flag = true;}var reginTree = {setting: {view: {fontCss: {color: "#000"}},check: {enabl..._ajax获取ztree新增父节点