标签:
1.C++:
#include <iostream> #include <fstream> #include <vector> #include <string> #include "cocos2d.h" #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 #include <windows.h> #include <strsafe.h> #else #include <dirent.h> #endif namespace fs { int readDir( const char *path, vector<string> &names ) { names.clear(); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 WIN32_FIND_DATAA ffd; //LARGE_INTEGER filesize; string szDir; //size_t length_of_arg; HANDLE hFind = INVALID_HANDLE_VALUE; DWORD dwError=0; string strDir = path; szDir = strDir + "\\*"; hFind = FindFirstFileA(szDir.c_str(), &ffd); if (INVALID_HANDLE_VALUE == hFind) { //CCLOGWARN("get file name error", path); return 0; } do { if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { string filename=ffd.cFileName;//(const char*) //string filedir=strDir+"\\"+filename; string filedir = filename; names.push_back(filedir); } }while (FindNextFileA(hFind, &ffd) != 0); dwError = GetLastError(); if (dwError != ERROR_NO_MORE_FILES) { //CCLOGWARN("FindFirstFile error", path); return 0; } FindClose(hFind); #else DIR *dp = opendir(path); if (!dp) { //CCLOGWARN("open dir error: %s.", path); return 0; } struct dirent *dirp = readdir(dp); while (dirp) { if (!strcmp(dirp->d_name,".") || !strcmp(dirp->d_name,"..")) continue; names.push_back(dirp->d_name); } closedir(dp); sort(names.begin(), names.end()); #endif return names.size(); } }
bool js_fs_readDir(JSContext *cx, uint32_t argc, jsval *vp) { if (argc == 1) { // get the native object from the second object to the first object jsval *argv = JS_ARGV(cx, vp); string path; jsval_to_std_string(cx, argv[0], &path); vector<string> names; fs::readDir(path.c_str(), names); jsval jsret = JSVAL_NULL; jsret = std_vector_string_to_jsval(cx, names); JS_SET_RVAL(cx, vp, jsret); return true; } return false; }
var files = fs.readdir(full_path);PS: 这里要传全路径,貌似android要把文件拷到可写路径去才能获取到文件列表。。
标签:
原文地址:http://blog.csdn.net/adfansong/article/details/42611449