zoukankan      html  css  js  c++  java
  • android ndk通过遍历和删除文件

           在做移动开发过程,难免有些本地文件管理操作。例如,很常见app随着微博、微信要清除缓存功能,此功能是走app文件夹。然后删除所有缓存文件。使用java的File类能够实现本地文件遍历及删除等等功能,假设使用ndk的方式该怎样实现呢?曾经写过《基于c++使用win32 api遍历目录》。因为android ndk平台属于linux系统,所以该方式是无法使用的。通过查找linux下文件管理相关资料,顺利实现了文件遍历与删除功能,以下为对应代码。须要包括<dirent.h>头文件。
    // 删除指定文件夹内全部文件
    JNIEXPORT void JNICALL Java_com_test_util_T_deleteFiles(JNIEnv *env, jclass obj, jstring fileFolder)
    {
    	const char *file_folder = (*env)->GetStringUTFChars(env, fileFolder, 0);
    
    	DIR *pDir = NULL;
    	struct dirent *dmsg;
    	char szFileName[128];
    	char szFolderName[128];
    
    	strcpy(szFolderName, file_folder);
    	strcat(szFolderName, "/%s");
    	if ((pDir = opendir(file_folder)) != NULL)
    	{
    		// 遍历文件夹并删除文件
    		while ((dmsg = readdir(pDir)) != NULL)
    		{
    			if (strcmp(dmsg->d_name, ".") != 0 && strcmp(dmsg->d_name, "..") != 0)
    			{
    				sprintf(szFileName, szFolderName, dmsg->d_name);
    				remove(szFileName);
    			}
    		}
    	}
    
    	if (pDir != NULL)
    	{
    		closedir(pDir);
    	}
    
    	(*env)->ReleaseStringUTFChars(env, fileFolder, file_folder);
    }
           顺便给出还有一种实现方式,这样的文件遍历方式须要包括<io.h>头文件。在windows环境下測试能够用,可是移植到android ndk环境下,编译时提示无法找到该头文件,原因可能是我的ndk路径配置问题,后来没有再细查详细原因。
    long hFile = 0;
    struct _finddata_t file_info;
    hFile = _findfirst("test\*", &file_info);
    while (_findnext(hFile, & file_info) == 0)
    {
    	if (strcmp(file_info. name, ".") != 0 && strcmp(file_info. name, "..") != 0)
    	{
    		printf("%s
    ", file_info.name);
    	}
    	else
    	{
    		printf("%s
    ", "invalid");
    	}
    }
    _findclose(hFile);


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    VC下使用Proc连接Oracle数据库
    解决ORACLE账号system被锁和修改密码
    Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)[转]
    ckeditor用fckeditor的文件管理器实现图片上传
    video 播放多个视频
    web worker 发送Ajax
    对投影纹理映射的一些思考
    一个光线跟踪的简单实例
    【转载】齐次坐标概念&&透视投影变换推导
    今天开通了cnblog
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4708537.html
Copyright © 2011-2022 走看看