Construct 2中能否通过NW.JS读写磁盘文件?有无.capx示例?
解答结论
Construct 2 搭配 NW.js 完全可以实现本地磁盘文件的写入、存储、回读全流程需求,不需要额外购买或安装第三方小众插件。NW.js运行时会直接给Construct 2的运行环境开放Node.js核心API,突破普通浏览器导出的沙箱限制,可以直接操作用户本地磁盘的可访问路径。
具体实现方式
- 前置配置:导出项目时必须选择NW.js作为打包目标,普通HTML5浏览器导出的版本受安全沙箱限制,无法读写本地任意路径的文件。
- 写入文件操作:在Construct 2的事件表里调用「浏览器」对象的「执行JavaScript」动作,直接调用Node.js的fs模块完成写入,参考代码如下:
const fs = require('fs'); const path = require('path'); // 推荐优先使用nw.App.dataPath作为默认存储位置,该路径对当前用户完全可访问,不会有权限问题 const targetSavePath = path.join(nw.App.dataPath, 'custom_save_data.dat'); // 写入你需要存储的内容,比如存档、配置、导出的用户数据都可以 fs.writeFileSync(targetSavePath, "这里替换成你要存储的文本/序列化数据", 'utf-8'); // 可以把生成的存储路径存到Construct 2的全局变量里,后续读取直接调用 runtime.globalVars.storedFilePath = targetSavePath;
- 读取文件操作:同样通过执行JavaScript动作调用fs模块的读取接口即可,参考代码如下:
const fs = require('fs'); // 校验文件存在再读取,避免报错 if(fs.existsSync(runtime.globalVars.storedFilePath)){ const readContent = fs.readFileSync(runtime.globalVars.storedFilePath, 'utf-8'); // 将读取到的内容赋值给Construct 2内的变量,供后续项目逻辑使用 runtime.globalVars.loadedData = readContent; }
示例.capx参考
Construct 2官方内置示例库已经提供了NW.js文件读写的开箱可用演示capx,你可以直接在软件启动页的示例搜索栏输入「NW.js 本地存储」找到对应项目,示例内已经封装好了自定义路径选择、写入存档、读取加载、错误提示的完整事件逻辑,直接套用修改即可。
注意:不要把文件存储在NW.js的临时运行解压目录下,该目录会在软件清理缓存、版本更新时被自动清空,推荐使用
nw.App.dataPath或者引导用户手动选择文档、桌面等公开路径存储,保证文件长期可访问。
内容的提问来源于stack exchange,提问作者Kshitij
相关产品推荐
相关产品推荐

