Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android ndk下文件遍歷與刪除

android ndk下文件遍歷與刪除

編輯:關於Android編程

在做手機開發過程中,難免要進行一些本地文件管理操作,比如很多常見app如微博、微信等都有清除緩存功能,該功能就是遍歷app自己的緩存目錄,然後刪除全部緩存文件。使用java的File類可以實現本地文件遍歷及刪除等等功能,如果使用ndk的方式該如何實現呢?以前寫過《基於c++使用win32 api遍歷文件夾》,由於android ndk平台屬於linux系統,所以該方式是無法使用的。通過查找linux下文件管理相關資料,順利實現了文件遍歷與刪除功能,下面為相應代碼,需要包含頭文件。
// 刪除指定文件夾內所有文件
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);
}
順便給出另一種實現方式,這種文件遍歷方式需要包含頭文件,在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\n", file_info.name);
	}
	else
	{
		printf("%s\n", "invalid");
	}
}
_findclose( hFile);


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved