2013-01-28 15:17:20 +08:00
|
|
|
#include "FileUtilsTest.h"
|
|
|
|
|
2013-11-23 04:15:41 +08:00
|
|
|
static std::function<Layer*()> createFunctions[] = {
|
|
|
|
CL(TestResolutionDirectories),
|
|
|
|
CL(TestSearchPath),
|
|
|
|
CL(TestFilenameLookup),
|
|
|
|
CL(TestIsFileExist),
|
2014-06-24 14:51:35 +08:00
|
|
|
CL(TestFileFuncs),
|
|
|
|
CL(TestDirectoryFuncs),
|
2013-11-23 04:15:41 +08:00
|
|
|
CL(TextWritePlist),
|
2013-01-28 15:17:20 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
static int sceneIdx=-1;
|
|
|
|
#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0]))
|
|
|
|
|
2013-06-20 14:17:10 +08:00
|
|
|
static Layer* nextAction()
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
sceneIdx++;
|
|
|
|
sceneIdx = sceneIdx % MAX_LAYER;
|
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto layer = (createFunctions[sceneIdx])();
|
2013-07-23 08:25:44 +08:00
|
|
|
return layer;
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2013-06-20 14:17:10 +08:00
|
|
|
static Layer* backAction()
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
sceneIdx--;
|
|
|
|
int total = MAX_LAYER;
|
|
|
|
if( sceneIdx < 0 )
|
|
|
|
sceneIdx += total;
|
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto layer = (createFunctions[sceneIdx])();
|
2013-07-23 08:25:44 +08:00
|
|
|
return layer;
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2013-06-20 14:17:10 +08:00
|
|
|
static Layer* restartAction()
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto layer = (createFunctions[sceneIdx])();
|
2013-07-23 08:25:44 +08:00
|
|
|
return layer;
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void FileUtilsTestScene::runThisTest()
|
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto layer = nextAction();
|
2013-07-23 08:25:44 +08:00
|
|
|
addChild(layer);
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-07-12 06:24:23 +08:00
|
|
|
Director::getInstance()->replaceScene(this);
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// FileUtilsDemo
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void FileUtilsDemo::onEnter()
|
|
|
|
{
|
2013-06-07 08:12:28 +08:00
|
|
|
BaseTest::onEnter();
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2014-02-20 10:53:49 +08:00
|
|
|
void FileUtilsDemo::backCallback(Ref* sender)
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto scene = new FileUtilsTestScene();
|
|
|
|
auto layer = backAction();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-07-23 08:25:44 +08:00
|
|
|
scene->addChild(layer);
|
|
|
|
Director::getInstance()->replaceScene(scene);
|
|
|
|
scene->release();
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2014-02-20 10:53:49 +08:00
|
|
|
void FileUtilsDemo::nextCallback(Ref* sender)
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto scene = new FileUtilsTestScene();
|
|
|
|
auto layer = nextAction();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-07-23 08:25:44 +08:00
|
|
|
scene->addChild(layer);
|
|
|
|
Director::getInstance()->replaceScene(scene);
|
|
|
|
scene->release();
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2014-02-20 10:53:49 +08:00
|
|
|
void FileUtilsDemo::restartCallback(Ref* sender)
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto scene = new FileUtilsTestScene();
|
|
|
|
auto layer = restartAction();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-07-23 08:25:44 +08:00
|
|
|
scene->addChild(layer);
|
|
|
|
Director::getInstance()->replaceScene(scene);
|
|
|
|
scene->release();
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string FileUtilsDemo::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "No title";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string FileUtilsDemo::subtitle() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestResolutionDirectories
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void TestResolutionDirectories::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-12-19 03:45:30 +08:00
|
|
|
std::string ret;
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
sharedFileUtils->purgeCachedEntries();
|
2013-06-15 14:03:30 +08:00
|
|
|
_defaultSearchPathArray = sharedFileUtils->getSearchPaths();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> searchPaths = _defaultSearchPathArray;
|
2013-01-28 15:17:20 +08:00
|
|
|
searchPaths.insert(searchPaths.begin(), "Misc");
|
2013-01-29 09:56:38 +08:00
|
|
|
sharedFileUtils->setSearchPaths(searchPaths);
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-06-15 14:03:30 +08:00
|
|
|
_defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
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++) {
|
2013-08-16 16:05:27 +08:00
|
|
|
auto filename = String::createWithFormat("test%d.txt", i);
|
2013-01-28 15:17:20 +08:00
|
|
|
ret = sharedFileUtils->fullPathForFilename(filename->getCString());
|
2013-07-24 06:20:22 +08:00
|
|
|
log("%s -> %s", filename->getCString(), ret.c_str());
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestResolutionDirectories::onExit()
|
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
// reset search path
|
2013-06-15 14:03:30 +08:00
|
|
|
sharedFileUtils->setSearchPaths(_defaultSearchPathArray);
|
|
|
|
sharedFileUtils->setSearchResolutionsOrder(_defaultResolutionsOrderArray);
|
2013-01-28 15:17:20 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestResolutionDirectories::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: resolutions in directories";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestResolutionDirectories::subtitle() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "See the console";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestSearchPath
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void TestSearchPath::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-12-19 03:45:30 +08:00
|
|
|
std::string ret;
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
sharedFileUtils->purgeCachedEntries();
|
2013-06-15 14:03:30 +08:00
|
|
|
_defaultSearchPathArray = sharedFileUtils->getSearchPaths();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> searchPaths = _defaultSearchPathArray;
|
|
|
|
std::string writablePath = sharedFileUtils->getWritablePath();
|
|
|
|
std::string fileName = writablePath+"external.txt";
|
2013-01-28 17:43:53 +08:00
|
|
|
char szBuf[100] = "Hello Cocos2d-x!";
|
|
|
|
FILE* fp = fopen(fileName.c_str(), "wb");
|
|
|
|
if (fp)
|
|
|
|
{
|
2013-06-01 08:06:11 +08:00
|
|
|
size_t ret = fwrite(szBuf, 1, strlen(szBuf), fp);
|
2013-07-28 10:22:12 +08:00
|
|
|
CCASSERT(ret != 0, "fwrite function returned zero value");
|
2013-01-28 17:43:53 +08:00
|
|
|
fclose(fp);
|
2013-07-28 10:22:12 +08:00
|
|
|
if (ret != 0)
|
2013-07-24 06:20:22 +08:00
|
|
|
log("Writing file to writable path succeed.");
|
2013-01-28 17:43:53 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
searchPaths.insert(searchPaths.begin(), writablePath);
|
|
|
|
searchPaths.insert(searchPaths.begin()+1, "Misc/searchpath1");
|
|
|
|
searchPaths.insert(searchPaths.begin()+2, "Misc/searchpath2");
|
2013-01-29 09:56:38 +08:00
|
|
|
sharedFileUtils->setSearchPaths(searchPaths);
|
2013-01-28 17:43:53 +08:00
|
|
|
|
2013-06-15 14:03:30 +08:00
|
|
|
_defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipad");
|
|
|
|
sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);
|
|
|
|
|
|
|
|
for( int i=1; i<3; i++) {
|
2013-08-16 16:05:27 +08:00
|
|
|
auto filename = String::createWithFormat("file%d.txt", i);
|
2013-01-28 15:17:20 +08:00
|
|
|
ret = sharedFileUtils->fullPathForFilename(filename->getCString());
|
2013-07-24 06:20:22 +08:00
|
|
|
log("%s -> %s", filename->getCString(), ret.c_str());
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
2013-01-28 17:43:53 +08:00
|
|
|
|
|
|
|
// Gets external.txt from writable path
|
2013-12-19 03:45:30 +08:00
|
|
|
std::string fullPath = sharedFileUtils->fullPathForFilename("external.txt");
|
2013-07-24 06:20:22 +08:00
|
|
|
log("external file path = %s", fullPath.c_str());
|
2013-03-03 10:32:09 +08:00
|
|
|
if (fullPath.length() > 0)
|
|
|
|
{
|
2013-01-28 17:43:53 +08:00
|
|
|
fp = fopen(fullPath.c_str(), "rb");
|
|
|
|
if (fp)
|
|
|
|
{
|
|
|
|
char szReadBuf[100] = {0};
|
2014-03-20 16:24:55 +08:00
|
|
|
size_t read = fread(szReadBuf, 1, strlen(szBuf), fp);
|
2013-03-03 10:32:09 +08:00
|
|
|
if (read > 0)
|
2013-07-24 06:20:22 +08:00
|
|
|
log("The content of file from writable path: %s", szReadBuf);
|
2013-01-28 17:43:53 +08:00
|
|
|
fclose(fp);
|
|
|
|
}
|
|
|
|
}
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TestSearchPath::onExit()
|
|
|
|
{
|
2013-07-12 06:24:23 +08:00
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
// reset search path
|
2013-06-15 14:03:30 +08:00
|
|
|
sharedFileUtils->setSearchPaths(_defaultSearchPathArray);
|
|
|
|
sharedFileUtils->setSearchResolutionsOrder(_defaultResolutionsOrderArray);
|
2013-01-28 15:17:20 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestSearchPath::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: search path";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestSearchPath::subtitle() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "See the console";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestFilenameLookup
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void TestFilenameLookup::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-12-04 17:46:57 +08:00
|
|
|
ValueMap dict;
|
2013-12-03 14:47:35 +08:00
|
|
|
dict["grossini.bmp"] = Value("Images/grossini.png");
|
|
|
|
dict["grossini.xcf"] = Value("Images/grossini.png");
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
sharedFileUtils->setFilenameLookupDictionary(dict);
|
|
|
|
|
|
|
|
// Instead of loading carlitos.xcf, it will load grossini.png
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sprite = Sprite::create("grossini.xcf");
|
2013-01-28 15:17:20 +08:00
|
|
|
this->addChild(sprite);
|
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto s = Director::getInstance()->getWinSize();
|
2014-05-15 01:07:09 +08:00
|
|
|
sprite->setPosition(Vec2(s.width/2, s.height/2));
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TestFilenameLookup::onExit()
|
|
|
|
{
|
|
|
|
|
2013-07-12 06:24:23 +08:00
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
// reset filename lookup
|
2013-12-04 17:46:57 +08:00
|
|
|
sharedFileUtils->setFilenameLookupDictionary(ValueMap());
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestFilenameLookup::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: filename lookup";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestIsFileExist
|
2013-02-01 22:18:43 +08:00
|
|
|
|
|
|
|
void TestIsFileExist::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-02-01 22:18:43 +08:00
|
|
|
|
2014-03-26 23:33:58 +08:00
|
|
|
Label* pTTF = nullptr;
|
2013-02-01 22:18:43 +08:00
|
|
|
bool isExist = false;
|
|
|
|
|
|
|
|
isExist = sharedFileUtils->isFileExist("Images/grossini.png");
|
|
|
|
|
2014-04-09 23:31:05 +08:00
|
|
|
pTTF = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", "", 20);
|
2014-05-15 01:07:09 +08:00
|
|
|
pTTF->setPosition(Vec2(s.width/2, s.height/3));
|
2013-02-01 22:18:43 +08:00
|
|
|
this->addChild(pTTF);
|
|
|
|
|
|
|
|
isExist = sharedFileUtils->isFileExist("Images/grossini.xcf");
|
2014-04-09 23:31:05 +08:00
|
|
|
pTTF = Label::createWithSystemFont(isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", "", 20);
|
2014-05-15 01:07:09 +08:00
|
|
|
pTTF->setPosition(Vec2(s.width/2, s.height/3*2));
|
2013-02-01 22:18:43 +08:00
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsFileExist::onExit()
|
|
|
|
{
|
|
|
|
|
2013-07-12 06:24:23 +08:00
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
2013-02-01 22:18:43 +08:00
|
|
|
|
|
|
|
// reset filename lookup
|
2013-12-04 17:46:57 +08:00
|
|
|
sharedFileUtils->setFilenameLookupDictionary(ValueMap());
|
2013-02-01 22:18:43 +08:00
|
|
|
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestIsFileExist::title() const
|
2013-02-01 22:18:43 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: check whether the file exists";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestIsFileExist::subtitle() const
|
2013-02-01 22:18:43 +08:00
|
|
|
{
|
|
|
|
return "";
|
2013-03-03 10:32:09 +08:00
|
|
|
}
|
2013-04-28 00:36:37 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// TestFileFuncs
|
|
|
|
|
|
|
|
void TestFileFuncs::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
int x = s.width/2,
|
|
|
|
y = s.height/5;
|
|
|
|
Label* pTTF = nullptr;
|
|
|
|
|
|
|
|
std::string filename = "__test.test";
|
|
|
|
std::string filename2 = "__newtest.test";
|
|
|
|
std::string filepath = sharedFileUtils->getWritablePath() + filename;
|
|
|
|
std::string content = "Test string content to put into created file";
|
|
|
|
std::string msg;
|
|
|
|
|
|
|
|
FILE *out = fopen(filepath.c_str(), "w");
|
|
|
|
fputs(content.c_str(), out);
|
|
|
|
fclose(out);
|
|
|
|
|
|
|
|
// Check whether file can be created
|
|
|
|
if (sharedFileUtils->isFileExist(filepath))
|
|
|
|
{
|
|
|
|
pTTF = Label::createWithSystemFont("Test file '__test.test' created", "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 4));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
|
|
|
|
// getFileSize Test
|
|
|
|
long size = sharedFileUtils->getFileSize(filepath);
|
|
|
|
msg = StringUtils::format("getFileSize: Test file size equals %ld", size);
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 3));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
|
|
|
|
// renameFile Test
|
|
|
|
if (sharedFileUtils->renameFile(sharedFileUtils->getWritablePath(), filename, filename2))
|
|
|
|
{
|
|
|
|
pTTF = Label::createWithSystemFont("renameFile: Test file renamed to '__newtest.test'", "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 2));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
|
|
|
|
// removeFile Test
|
|
|
|
filepath = sharedFileUtils->getWritablePath() + filename2;
|
|
|
|
if (sharedFileUtils->removeFile(filepath))
|
|
|
|
{
|
|
|
|
pTTF = Label::createWithSystemFont("removeFile: Test file removed", "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 1));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
pTTF = Label::createWithSystemFont("removeFile: Failed to remove test file", "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 1));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
pTTF = Label::createWithSystemFont("renameFile: Failed to rename test file to '__newtest.test', further test skipped", "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 2));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
pTTF = Label::createWithSystemFont("Test file can not be created, test skipped", "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 4));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestFileFuncs::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: file control functions";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestFileFuncs::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestDirectoryFuncs
|
|
|
|
|
|
|
|
void TestDirectoryFuncs::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
int x = s.width/2,
|
|
|
|
y = s.height/4;
|
|
|
|
Label* pTTF = nullptr;
|
|
|
|
|
|
|
|
std::string dir = sharedFileUtils->getWritablePath() + "__test/";
|
|
|
|
std::string subDir = "dir1/dir2";
|
|
|
|
std::string msg;
|
|
|
|
bool ok;
|
|
|
|
|
|
|
|
// Check whether dir can be created
|
|
|
|
ok = sharedFileUtils->createDirectory(dir);
|
|
|
|
if (ok && sharedFileUtils->isDirectoryExist(dir))
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("createDirectory: Directory '__test' created");
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 3));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
|
|
|
|
// Create sub directories recursively
|
|
|
|
ok = sharedFileUtils->createDirectories(dir + subDir);
|
|
|
|
if (ok && sharedFileUtils->isDirectoryExist(dir + subDir))
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("createDirectories: Sub directories '%s' created", subDir.c_str());
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 2));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("createDirectories: Failed to create sub directories '%s'", subDir.c_str());
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 2));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Remove directory
|
|
|
|
ok = sharedFileUtils->removeDirectory(dir);
|
|
|
|
if (ok && !sharedFileUtils->isDirectoryExist(dir))
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("removeDirectory: Directory '__test' removed");
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("removeDirectory: Failed to remove directory '__test'");
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("createDirectory: Directory '__test' can not be created");
|
|
|
|
pTTF = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
pTTF->setPosition(Vec2(x, y * 2));
|
|
|
|
this->addChild(pTTF);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestDirectoryFuncs::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: directory control functions";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestDirectoryFuncs::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestWritePlist
|
2013-04-28 00:36:37 +08:00
|
|
|
|
|
|
|
void TextWritePlist::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto root = Dictionary::create();
|
|
|
|
auto string = String::create("string element value");
|
2013-04-28 00:36:37 +08:00
|
|
|
root->setObject(string, "string element key");
|
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto array = Array::create();
|
2013-04-28 00:36:37 +08:00
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto dictInArray = Dictionary::create();
|
2013-06-20 14:17:10 +08:00
|
|
|
dictInArray->setObject(String::create("string in dictInArray value 0"), "string in dictInArray key 0");
|
|
|
|
dictInArray->setObject(String::create("string in dictInArray value 1"), "string in dictInArray key 1");
|
2013-04-28 00:36:37 +08:00
|
|
|
array->addObject(dictInArray);
|
|
|
|
|
2013-06-20 14:17:10 +08:00
|
|
|
array->addObject(String::create("string in array"));
|
2013-04-28 00:36:37 +08:00
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto arrayInArray = Array::create();
|
2013-06-20 14:17:10 +08:00
|
|
|
arrayInArray->addObject(String::create("string 0 in arrayInArray"));
|
|
|
|
arrayInArray->addObject(String::create("string 1 in arrayInArray"));
|
2013-04-28 00:36:37 +08:00
|
|
|
array->addObject(arrayInArray);
|
|
|
|
|
|
|
|
root->setObject(array, "array");
|
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto dictInDict = Dictionary::create();
|
2013-06-20 14:17:10 +08:00
|
|
|
dictInDict->setObject(String::create("string in dictInDict value"), "string in dictInDict key");
|
2014-03-18 14:59:59 +08:00
|
|
|
|
|
|
|
//add boolean to the plist
|
|
|
|
auto booleanObject = Bool::create(true);
|
|
|
|
dictInDict->setObject(booleanObject, "bool");
|
2013-04-28 00:36:37 +08:00
|
|
|
|
2014-03-18 14:59:59 +08:00
|
|
|
//add interger to the plist
|
|
|
|
auto intObject = Integer::create(1024);
|
|
|
|
dictInDict->setObject(intObject, "integer");
|
|
|
|
|
|
|
|
//add float to the plist
|
|
|
|
auto floatObject = Float::create(1024.1024f);
|
|
|
|
dictInDict->setObject(floatObject, "float");
|
|
|
|
|
|
|
|
//add double to the plist
|
|
|
|
auto doubleObject = Double::create(1024.123);
|
|
|
|
dictInDict->setObject(doubleObject, "double");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
root->setObject(dictInDict, "dictInDict, Hello World");
|
2013-04-28 00:36:37 +08:00
|
|
|
|
|
|
|
// end with /
|
2013-07-12 06:24:23 +08:00
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
2013-04-28 00:36:37 +08:00
|
|
|
std::string fullPath = writablePath + "text.plist";
|
|
|
|
if(root->writeToFile(fullPath.c_str()))
|
2013-07-24 06:20:22 +08:00
|
|
|
log("see the plist file at %s", fullPath.c_str());
|
2013-04-28 00:36:37 +08:00
|
|
|
else
|
2013-07-24 06:20:22 +08:00
|
|
|
log("write plist file failed");
|
2013-04-28 00:36:37 +08:00
|
|
|
|
2014-04-09 23:31:05 +08:00
|
|
|
auto label = Label::createWithTTF(fullPath.c_str(), "fonts/Thonburi.ttf", 6);
|
2013-04-28 00:36:37 +08:00
|
|
|
this->addChild(label);
|
2013-08-16 16:05:27 +08:00
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
2014-05-15 01:07:09 +08:00
|
|
|
label->setPosition(Vec2(winSize.width/2, winSize.height/3));
|
2014-03-19 11:58:11 +08:00
|
|
|
|
2014-03-26 15:04:45 +08:00
|
|
|
auto loadDict = __Dictionary::createWithContentsOfFile(fullPath.c_str());
|
|
|
|
auto loadDictInDict = (__Dictionary*)loadDict->objectForKey("dictInDict, Hello World");
|
|
|
|
auto boolValue = (__String*)loadDictInDict->objectForKey("bool");
|
2014-03-19 14:31:15 +08:00
|
|
|
CCLOG("%s",boolValue->getCString());
|
2014-03-26 15:04:45 +08:00
|
|
|
auto floatValue = (__String*)loadDictInDict->objectForKey("float");
|
2014-03-19 14:31:15 +08:00
|
|
|
CCLOG("%s",floatValue->getCString());
|
2014-03-26 15:04:45 +08:00
|
|
|
auto intValue = (__String*)loadDictInDict->objectForKey("integer");
|
2014-03-19 14:31:15 +08:00
|
|
|
CCLOG("%s",intValue->getCString());
|
2014-03-26 15:04:45 +08:00
|
|
|
auto doubleValue = (__String*)loadDictInDict->objectForKey("double");
|
2014-03-19 14:31:15 +08:00
|
|
|
CCLOG("%s",doubleValue->getCString());
|
|
|
|
|
2013-04-28 00:36:37 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TextWritePlist::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TextWritePlist::title() const
|
2013-04-28 00:36:37 +08:00
|
|
|
{
|
2013-06-20 14:17:10 +08:00
|
|
|
return "FileUtils: Dictionary to plist";
|
2013-04-28 00:36:37 +08:00
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TextWritePlist::subtitle() const
|
2013-04-28 00:36:37 +08:00
|
|
|
{
|
2013-07-12 06:24:23 +08:00
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath().c_str();
|
2013-04-28 00:36:37 +08:00
|
|
|
return ("See plist file at your writablePath");
|
|
|
|
}
|