文件读写——files API 操作本地文件系统
基础读写
// 写文本文件
files.write("/sdcard/test.txt", "Hello Auto.js");
// 读文本文件
var content = files.read("/sdcard/test.txt");
toast(content); // "Hello Auto.js"
// 追加写入
files.append("/sdcard/log.txt", "新的一行\n");
// 二进制写
files.writeBytes("/sdcard/data.bin", byteArray);
目录操作
// 创建目录
files.createWithDirs("/sdcard/AutoJsScripts/新目录/子目录");
// 列出目录
var allFiles = files.listDir("/sdcard/AutoJsScripts/", function(name) {
return name.endsWith(".js"); // 只列 js 文件
});
// 删除
files.remove("/sdcard/temp.txt");
files.removeDir("/sdcard/AutoJsScripts/旧目录");
// 是否存在
if (files.exists("/sdcard/config.json")) {
log("配置文件存在");
}
// 重命名
files.rename("/sdcard/old.txt", "/sdcard/new.txt");
常用路径
// Auto.js 内部存储路径
var scriptsDir = files.cwd(); // 当前工作目录
// SD 卡
var sdCard = "/sdcard/";
// 公共下载目录
var downloadsDir = "/sdcard/Download/";
// 缓存目录
var cache = context.getCacheDir().getPath();
实战:配置持久化
// 保存配置
var config = {
apps: ["淘宝", "京东"],
hour: 8,
enabled: true
};
files.write("/sdcard/signin_config.json", JSON.stringify(config, null, 2));
toast("配置已保存");
// 下次启动读取
if (files.exists("/sdcard/signin_config.json")) {
var saved = JSON.parse(files.read("/sdcard/signin_config.json"));
log("读取配置:" + JSON.stringify(saved));
}
Android 10+ 分区存储注意
Android 10 引入了 Scoped Storage,/sdcard/ 的直接访问在部分设备上受限。Auto.js 提供了两种规避方式:
- 首次请求存储权限后继续使用
/sdcard/路径 - 使用 Auto.js 内部目录(
files.cwd())存放脚本和数据