- FileUtils 操作文件的时候, 基本上都是直接返回一个内存块, 但其实有很多情况文件是需要处于长期打开状态的, 而这种文件往往又很大, 导致内存白白浪费。 例如背景音乐(cocos2dx已经封装了音乐,交给了系统底层处理, 但如果是自己写的声音引擎就要处理这个问题了) 或者是一段很长的视频。
- FileUtils打开文件的时候, 返回的是一块内存地址, 调用者使用完后需要自己delete掉。 这违反了“谁申请, 谁释放”原则。 FileUtils是属于libcocos2d库的, 如果存在一个第三方库调用FileUtils, 第三方库delete由libcocos2d分配的内存将有可能产生灾难性后果。
- 返回一个没有包装的内存块, 导致高层与底层之间不够透明, 需要扩展的时候很麻烦。
建议FileUtils 不要返回一个内存块, 而是返回一个 File接口, 这个接口可能是一个 包装了一个内存块的的File对象, 也可能是一个包装了 FILE* 的 File对象,或者一个包装了 内存映射文件的对象 等等自定义对象。 调用者使用完接口后, 调用close方法由对象自己去释放资源, delete内存也好, 关闭文件指针也好,这些都对调用者透明。