7872
7
3
2
在使用轻站的时候总好像有一种违和感,不知道为什么总感觉像是少了什么功能一样,后来才发现作者大大好像还没提供本地文件读写的Api,没有文件读写Api意味着数据不能在本地进行持久化,无法数据持久化也就意味着无法保存想要保存的数据,于是乎我写了一个创建和读取本地文件的函数来作为暂时性的替代方案,废话就不多说了,直接上代码。
写入函数
/**全局变量 文件名 可带路径(以/开头)
* eg: /data.json 、 /我的轻站/data.json
* */
var fname = getVar('fname');
/** url要写入的内容 可自行更改
* */
var u = getVar('url');
/**
* 以覆盖的方式写入文件
* @param {String} filename 文件名
* @param {*} content 写入内容
*/
function write(filename, content) {
var path =
android.os.Environment.getExternalStorageDirectory()
.getAbsolutePath()
.toString() + '/Android/data/cn.nr19.mbrowser/files/';
var file = new java.io.File(path + filename);
if (!file.exists()) file.createNewFile();
var fileWritter = new java.io.FileWriter(path + filename, false);
fileWritter.write(content);
fileWritter.close();
}
读取函数
/**
* 读取指定文件内容并使用Json解析返回
* @param {String} filename 文件名
* @returns
*/
function read(filename) {
var path =
android.os.Environment.getExternalStorageDirectory()
.getAbsolutePath()
.toString() + '/Android/data/cn.nr19.mbrowser/files/';
var file = new java.io.File(path + filename);
if (!file.getParentFile().exists()) file.getParentFile().mkdirs();
if (!file.exists()) return [];
var filelength = file.length();
var filecontent = java.lang.reflect.Array.newInstance(
java.lang.Byte.TYPE,
filelength
);
var fin = new java.io.FileInputStream(file);
fin.read(filecontent);
return JSON.parse(new java.lang.String(filecontent));
// 如果不需要Json解析内容可改为
// return new java.lang.String(filecontent);
}
日期格式化函数
/**
* 返回指定格式日期
* @param {String} fmt 日期格式
* @returns
*/
Date.prototype.format = function (fmt) {
var o = {
'M+': this.getMonth() + 1, //月份
'd+': this.getDate(), //日
'h+': this.getHours(), //小时
'm+': this.getMinutes(), //分
's+': this.getSeconds(), //秒
'q+': Math.floor((this.getMonth() + 3) / 3), //季度
S: this.getMilliseconds(), //毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(this.getFullYear() + '').substr(4 - RegExp.$1.length)
);
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return fmt;
};
var date = new Date().format('MM月dd日hh:mm');
e2Rex(date, '.all()');
根据唐牛大佬补充
以上函数用可用E2内置函数.time(YYYY年MM月dd日hh时mm分ss秒)代替
使用方法
//读取文件内容
var list = read(fname);
//获取传入内容使用Json解析 可自行选择传入内容格式
u = JSON.parse(u);
u['id'] = list.length;
u['date'] = getVar('date');
//追加
list.push(u);
//将Js对象转化为json对象写入文件
write(fname, JSON.stringify(list));
// alert('写入成功!');