6482 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('写入成功!');​

 

上传的附件:
最新回复 (7)
  • 0 引用
    DEMO复制不正常,不能自动导入。
    2021-12-12 取消查看 收起回复
    漂泊的小猫: 不知道为什么一保存就被截断。。。,可能是我用了emoji表情的原因,我重新上传了
    2021-12-12回复
    lgh00: 回复 漂泊的小猫: 不是可能,就是enjoy,只要用了就不能正常复制。
    2021-12-12回复
    • 轻创社区 - 有源软件体验中心
      9
        登录 注册
返回