原文链接: http://www.cnblogs.com/zouzf/p/3972457.html

读写文件Cocos已经用fopen fwrite来做好了,这里说的主要是文件和文件夹的创建、删除、判断是否存在等。

本来打算把把这部分代码放到C#工程来做,然后通过上一篇说到的C++和C#交互的那个通道来调用的,但是wp8里很多东西都被做成异步的形式了,文件的读写操作也被设计成了异步的形式,但是在C++这边发起调用的方法是需要同步调用的,这里如何转换是一个难题,由于对task PPL 那一套不熟悉,最后没办法只能放到C++工程来做。

另外,在task里那个捕获异常也是很痛苦的一件事情——一直没研究透彻task,所以代码实现得比较挫

 bool WZFileUtilWP8::makeDirectory(const std::string& dirPath)
{ auto localFolder = Windows::Storage::ApplicationData::Current->LocalFolder;
Platform::String ^pStr_FileName = ref new Platform::String(WZCallCS_And_Back_CommonFunc::stringToWString(dirPath.c_str()).c_str()); create_task(localFolder->CreateFolderAsync(pStr_FileName, CreationCollisionOption::ReplaceExisting)).wait(); CCLog("craete folder: %s success\n", dirPath.c_str());
return true; } bool WZFileUtilWP8::removeDirectory(const std::string& dirName)
{
//return callCS->FunCallCS_RemoveDirectory(dirName.c_str()); //删除不存在的文件夹会抛出异常,但这异常在task里捕获真TM蛋疼
//现在通过先创建一个和要删除的文件夹同名的文件夹再删除来间接实现 auto localFolder = Windows::Storage::ApplicationData::Current->LocalFolder;
Platform::String ^pStr_dirName = ref new Platform::String(WZCallCS_And_Back_CommonFunc::stringToWString(dirName.c_str()).c_str()); this->makeDirectory(dirName); create_task(localFolder->GetFolderAsync(pStr_dirName)).then([](StorageFolder^ folder)
{
folder->DeleteAsync();
}).wait(); CCLog("remove folder: %s success\n", dirName.c_str());
return true;
} bool WZFileUtilWP8::isFullPathExist(const std::string &fullPath)
{
auto localFolder = Windows::Storage::ApplicationData::Current->LocalFolder;
Platform::String ^pStr_fulaPathName = ref new Platform::String(WZCallCS_And_Back_CommonFunc::stringToWString(fullPath.c_str()).c_str()); //还是异常捕获太蛋疼,直接创建吧,总是返回true
create_task(localFolder->CreateFileAsync(pStr_fulaPathName, CreationCollisionOption::OpenIfExists)).wait(); CCLog("file: %s is exist\n", fullPath.c_str());
return true;
} //根据一个多级 目录 的字符串创建目录及文件
bool WZFileUtilWP8::makeFullPath(const std::string& fullTargetPath)
{ //wp8可以直接创建多级目录
//return callCS->FunCallCS_CreateFullPathFile(fullPath.c_str()); auto localFolder = Windows::Storage::ApplicationData::Current->LocalFolder;
Platform::String ^pStr_fullPathName = ref new Platform::String(WZCallCS_And_Back_CommonFunc::stringToWString(fullTargetPath.c_str()).c_str());
create_task(localFolder->CreateFileAsync(pStr_fullPathName, CreationCollisionOption::ReplaceExisting)).wait(); CCLog("create file: %s success\n", fullTargetPath.c_str()); return true; }

原文链接: http://www.cnblogs.com/zouzf/p/3972457.html

Cocos2d-x项目移植到WP8系列之四:文件操作的更多相关文章

  1. Cocos2d-x项目移植到WP8系列之二:开篇

    原文链接: http://www.cnblogs.com/zouzf/p/3970130.html 开发环境一笔带过吧,主板和CPU要支持虚拟化技术,要开启才行,装个64位win8.1系统,win8不 ...

  2. Cocos2d-x项目移植到WP8系列之三:C++和C#的交互

    原文链接: http://www.cnblogs.com/zouzf/p/3971021.html 上一篇提到工程使用 XAML 和 Direct3D 项目模板 是因为要涉及到C++和C#的交互,微软 ...

  3. Cocos2d-x项目移植到WP8系列之一:前传

    原文链接: http://www.cnblogs.com/zouzf/p/3969993.html 许久没动笔了,随想一直都有动笔的想法,但拖来拖去,归根到底还是一个懒字吧 .发现人的惰性真是太强大了 ...

  4. Cocos2d-x项目移植到WP8系列之九:使用自定义shader

    本文原链接:http://www.cnblogs.com/zouzf/p/3995132.html 有时候想得到一些例如灰度图等特殊的渲染效果,就得用到自定义shader,关于shader的一些背景知 ...

  5. Cocos2d-x项目移植到WP8系列之八:CCLabelTTF显示中文不换行

    原文链接: http://www.cnblogs.com/zouzf/p/3985330.html 在wp8平台上,CCLabeTTF显示中文不会自动换行,看了下源码,原来底层的实现是根据text的空 ...

  6. Cocos2d-x项目移植到WP8系列之六:C#工程使用C++的DLL

    原文链接: http://www.cnblogs.com/zouzf/p/3984510.html 此时,一些大问题都被解决后,整个工程基本能跑起来了,最后一个大问题是:业务层是用Lua开发的,底层的 ...

  7. Cocos2d-x项目移植到WP8系列之七:中文显示乱码

    原文链接:http://www.cnblogs.com/zouzf/p/3984628.html C++和C#互调时经常会带一些参数过去例如最常见的字符串,如果字符串里有中文的话,会发现传递过去后变成 ...

  8. Cocos2d-x项目移植到WP8系列之五:播放MP3

    原文链接: http://www.cnblogs.com/zouzf/p/3972549.html 这一块的细节还是不太了解,只是东凑西拼能跑起来而已 1.网上下载lamb库 生成需要的lib库,详情 ...

  9. Cocos2d-x项目移植到WP8小记

    Cocos2d-x项目移植到WP8小记 作者: K.C. 日期: 10/24/2013 Date: 2013-10-24 00:33 Title: Cocos2d-x项目移植到WP8小记 Tags: ...

随机推荐

  1. Tomcat (7.0)数据源配置

    在Tomcat这个Java Web容器下通过配置DataSource(数据源)对象能够解决上面所述的问题. JDBC中的javx.sql.DataSource接口负责建立于数据库的连接.程序中直接从数 ...

  2. wpf数据绑定更新通知

    类似于这样子的;大致的意思是:一个代码变量,通过改变变量的值,绑定这个变量的这个圆颜色也在变化 就是一种心跳效果 在网上数据触发的感觉不多,废了不少时间,这里做个总结 1:通知 class Notif ...

  3. GOCR v0.50 原理分析

    一,简介: GOCR是一个c写的开源OCR库,GNU Public License,作者:Joerg Schulenburg 项目主页:http://jocr.sourceforge.net/inde ...

  4. python 线程(thread)

    #coding:utf-8#多线程#Python的标准库提供了两个模块:thread和threading,thread是低级模块,threading是高级模块,对thread进行了封装 #绝大数情况下 ...

  5. ProgressBar 进度条设置百分比显示

    rawable/progressbar <layer-list xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  6. Convert.ToInt32(string '000000003') 变成了 3

    Convert.ToInt32(string '000000003') 变成了 3 但是在查询的时候需要用的是string 这里的convert.toint32 反而起了坏作用,不是所有的时候都要用c ...

  7. js 自学,云知梦知识 点理论

    一.第1章(1--4) 何为js特效 1.定义事件(触发时机+行为) 2.触发事件(行为发生) 3.事件发生是具有重复性   js是基本对象的语言. 面向对像编程 1.如何获得该对象 2.如何 调用该 ...

  8. 通知url必须为直接可访问的url,不能携带参数 异步接收微信支付结果通知的回调地址 不能携带参数。 回调地址后是否可以加自定义参数 同步回调地址 异步回调地址 return_url和notify_url的区别

    [微信支付]微信小程序支付开发者文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7 通知url必须为直接可访问的 ...

  9. PS导出@3x、@2x、@1x格式的iOS切图神器-Retinize

    Retinize动作下载地址:http://retinize.it/ 使用:ps-载入动作-选中图片-执行动作

  10. CRM客户关系管理系统-需求概设和详设

    大概设计 大概设计就是对需求进行一个整体性分析,把需要实现的功能都列出来,对于客户关系管理系统,我们需要从角色出发,从而确定有哪些需求,最好是画个思维导图 首先我们是为培训学校这么一个场景来开发的,所 ...