手机本地写入和读取数据
相关链接
https://developers.weixin.qq.com/miniprogram/dev/framework/ability/file-system.html
readFileSync、writeFileSync、readFile和writeFile是Node.js的文件系统模块(fs)提供的不同文件读写方法
readFileSync 和 writeFileSync 是同步读写文件的方法,调用时,代码会等待文件写入完成后才继续往下执行
readFile 和 writeFile 是异步读写文件的方法,调用时,代码不会等待文件写入完成,而是直接执行后面的代码,文件写入完成后会执行回调函数
【同步】读取和写入
- offLine.js
js
// 导入文件系统管理器
const system = wx.getFileSystemManager();
/**
* 同步写入数据到指定的文件中
* @param {string} fileName - 文件名,不包括扩展名
* @param {*} data - 要写入的数据,任意类型
*/
function write(fileName, data) {
try {
system.writeFileSync(
`${wx.env.USER_DATA_PATH}/${fileName}.json`,
JSON.stringify(data),
"utf8"
);
console.log('📵 ~ ', `${fileName}本地缓存写入成功`);
return true;
} catch (e) {
console.log('📵 ~ ', `${fileName}本地缓存写入失败: ` + e);
return false;
}
}
/**
* 同步读取指定文件的内容
* @param {string} fileName - 文件名,不包括扩展名
*/
function read(fileName) {
try {
const json = system.readFileSync(
`${wx.env.USER_DATA_PATH}/${fileName}.json`,
"utf8"
);
console.log('📵 ~ ', `${fileName}本地缓存读取成功`);
return JSON.parse(json);
} catch (e) {
console.log('📵 ~ ', `${fileName}本地缓存读取失败: ` + e);
return [];
}
}
const offLine = {
write,
read
};
export default offLine;
【同步】写入和读取调用示例
js
import offLine from "../../utils/offLine.js";
// 同步写入调用示例
const data = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
];
const success = offLine.write('exampleFile', data);
if (success) {
console.log('写入成功');
} else {
console.log('写入失败');
}
// 同步读取调用示例
const data = offLine.read('exampleFile');
console.log('读取结果:', data);
【异步】读取和写入
- offLine.js
js
// 导入文件系统管理器
const system = wx.getFileSystemManager();
/**
* 异步写入数据到指定的文件中,并通过回调函数返回写入结果
* @param {string} fileName - 文件名,不包括扩展名
* @param {*} data - 要写入的数据,任意类型
* @param {function} callback - 回调函数,接受写入结果(true/false)作为参数
*/
function write(fileName, data, callback) {
system.writeFile({
filePath: `${wx.env.USER_DATA_PATH}/${fileName}.json`,
data: JSON.stringify(data),
encoding: 'utf8',
success: () => {
console.log('📵 ~ ', `${fileName} 本地缓存写入成功`);
callback(true);
},
fail: (err) => {
console.log('📵 ~ ', `${fileName} 本地缓存写入失败 :` + err);
callback(false);
}
});
}
/**
* 异步读取指定文件的内容,并通过回调函数返回数据
* @param {string} fileName - 文件名,不包括扩展名
* @param {function} callback - 回调函数,接受读取到的数据作为参数
*/
function read(fileName, callback) {
system.readFile({
filePath: `${wx.env.USER_DATA_PATH}/${fileName}.json`,
encoding: 'utf8',
success: (res) => {
const list = JSON.parse(res.data);
console.log('📵 ~ ', `${fileName} 本地缓存读取成功`);
callback(list);
},
fail: (err) => {
console.log('📵 ~ ',`${fileName} 本地缓存读取失败 :` + err);
callback([]);
}
});
}
const offLine = {
write,
read
};
export default offLine;
【异步】写入和读取调用示例
js
import offLine from "../../utils/offLine.js";
// 异步写入调用示例
const data = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
];
offLine.write('exampleFile', data, (result) => {
console.log('写入:', result);
});
// 异步读取调用示例
offLine.read('ownerLocalFile', (data) => {
console.log('读取结果:', data);
});