首页 > 代码库 > Cocos2d-x3.0 文件处理

Cocos2d-x3.0 文件处理


1、从文件中读取内容

   auto sharedFileUtils = FileUtils::getInstance();
        std::string ret;
        sharedFileUtils->purgeCachedEntries();
        std::vector<std::string> searchPaths = sharedFileUtils->getSearchPaths();
        searchPaths.insert(searchPaths.begin(), "Misc");
        sharedFileUtils->setSearchPaths(searchPaths);
        
        std::vector<std::string> resolutionsOrder = sharedFileUtils->getSearchResolutionsOrder();
        resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipadhd");
        resolutionsOrder.insert(resolutionsOrder.begin()+1, "resources-ipad");
        resolutionsOrder.insert(resolutionsOrder.begin()+2, "resources-widehd");
        resolutionsOrder.insert(resolutionsOrder.begin()+3, "resources-wide");
        resolutionsOrder.insert(resolutionsOrder.begin()+4, "resources-hd");
        resolutionsOrder.insert(resolutionsOrder.begin()+5, "resources-iphone");

        
        sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);
        
        for (int i = 1; i < 7; i++) {
            auto filename =StringUtils::format("test%d.txt",i);
            //获取文件路径
            ret = sharedFileUtils->fullPathForFilename(filename.c_str());
            //获取文件中的字符串
            std::string st = FileUtils::getInstance()->getStringFromFile(filename);
            log("%s -> %s",filename.c_str(),st.c_str());
        }

向本地写入和读取

        auto sharedFileUtils = FileUtils::getInstance();
        std::string ret;
    
        sharedFileUtils->purgeCachedEntries();
        std::vector<std::string> searchPaths = sharedFileUtils->getSearchPaths();
        std::string writablePath = sharedFileUtils->getWritablePath();
        std::string fileName = writablePath + "external1.txt";
        char szBuf[100] = "Hello Cocos2d-xrewrwe!";
        /*向本地写入*/
        FILE* fp = fopen(fileName.c_str(), "wb");
        if (fp) {
            size_t ret = fwrite(szBuf, 1, strlen(szBuf), fp);
            CCASSERT(ret != 0, "fwrite function returned zero value");
            fclose(fp);
            if (ret != 0)
                log("Writing file to writable path succeed.");
            
        }
        
        
        /**********************************/
        searchPaths.insert(searchPaths.begin(), writablePath);
        sharedFileUtils->setSearchPaths(searchPaths);
        
        
        //Get external.txt from writable path
        std::string fullPath = sharedFileUtils->fullPathForFilename("external1.txt");
        log("external file path = %s",fullPath.c_str());
        /*读取文件*/
        if (fullPath.length() > 0) {
            fp = fopen(fullPath.c_str(), "rb");
            if (fp) {
                char szReadBuf[100] = {0};
                size_t read = fread(szReadBuf, 1, strlen(szBuf), fp);
                if (read > 0)
                    log("The content of file from writable path: %s",szReadBuf);
                fclose(fp);
            }
        }


判断文件是否存在

        auto s = Director::getInstance()->getWinSize();
        auto sharedFileUtils = FileUtils::getInstance();
        
        Label* pTTF;
        bool isExist = false;
        
        //判断文件是否存在
        isExist = sharedFileUtils->isFileExist("grossini.png");

        pTTF = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn‘t exist", "", 20);
        pTTF->setPosition(Point(s.width / 2, s.height / 2));
        this->addChild(pTTF);



auto s = Director::getInstance()->getWinSize();
        auto sharedFileUtils = FileUtils::getInstance();
        
        
        ValueMap dict;
        dict["grossini.bmp"] = Value("grossini.png");
        dict["grossini.xcf"] = Value("grossini.png");
        
        sharedFileUtils->setFilenameLookupDictionary(dict);
        auto sprite = Sprite::create("grossini.bmp");
        this->addChild(sprite);
        
        sprite->setPosition(Point(s.width / 2, s.height / 2));