plain
复制代码
import dataPreference from '@ohos.data.preferences';
import common from '@ohos.app.ability.common';
import preferences from '@ohos.data.preferences';
//preference的名称
const PREFERENCE_NMAE = 'pre_name';
const LOG_TAG = 'preferencesUtil';
let context = getContext(this) as common.UIAbilityContext;
export default class PreferenceUtils {
//preference对象
private preferences:preferences.Preferences | null = null;
/**
* 获取preferenced对象
*/
async getPreferencesFromStorage(){
await dataPreference.getPreferences(context,PREFERENCE_NMAE).then((data) => {
this.preferences = data
console.info(LOG_TAG,'init preferences success')
}).catch((err) =>{
console.error(LOG_TAG,'init preferences faild ,reason:'+err);
})
}
/**
* 存放preferences键值对
* @param key
* @param value
*/
async putPreference(key: string,value: string){
if (this.preferences === null){
await this.getPreferencesFromStorage();
}
await this.preferences.put(key,value).then(() => {
console.info(LOG_TAG,'put data success');
}).catch((err) => {
console.error(LOG_TAG,'put data failed,reason:'+err);
})
await this.preferences.flush();
}
/**
* 获取指定key的preference的值
* @param key
* @returns
*/
async getPreference(key: string){
let result = '';
if(this.preferences === null){
await this.getPreferencesFromStorage();
}
await this.preferences.get(key,'').then((data) => {
result = data.toString();
console.info(LOG_TAG,'get data success, data:'+data.toString());
}).catch((err) => {
console.error(LOG_TAG,'get data failed,reason:'+err);
})
return result;
}
/**
* 删除指定key的preferences
* @param key
*/
async deletePreference(key: string){
if(this.preferences === null){
await this.getPreferencesFromStorage();
}
await this.preferences.delete(key).then(() => {
console.info(LOG_TAG,'delete data success');
}).catch((err) => {
console.error(LOG_TAG,'get data failed,reason:'+err);
})
}
/**
* 更新指定key的值
* @param key
* @param value
*/
async updatePreference(key: string,value: string){
if(this.preferences === null){
await this.getPreferencesFromStorage();
}
this.deletePreference(key);
this.putPreference(key,value);
}
/**
* 数据持久化
*/
async flushPreference(){
if(this.preferences === null){
await this.getPreferencesFromStorage();
}
await this.preferences.flush((err) => {
if(err){
console.info(LOG_TAG,'flush failed err.code:'+err.code + 'err message:'+err.message);
return;
}
console.info(LOG_TAG,'flush success');
})
}
/**
* 删除Preferences
*/
async deletePreferences(){
await preferences.deletePreferences(context,PREFERENCE_NMAE).then(() => {
console.info(LOG_TAG,'delete success');
}).catch((err) => {
console.error(LOG_TAG,'delete failed err.code:'+err.code + 'err message:'+err.message);
})
}
}
plain
复制代码
import AccountBean from '../entry/AccountBean';
import preferenceUtils from '../pages/PreferenceUtils'
const PERFERENCE_KEY_NAME = 'pre_utils_name';
@Component
@Entry
struct UtilsPage {
@State message: string = 'show messge';
private preferenceUtils = new preferenceUtils();
async aboutToAppear() {
//初始化preferences
await this.preferenceUtils.getPreferencesFromStorage();
}
build() {
Column() {
Text(this.message)
.fontSize(30)
Button('写入数据')
.type(ButtonType.Capsule)
.margin({top:10})
.onClick(() => {
let newAccountBean: AccountBean = {id:1,name:'购物',price:'22'}
this.preferenceUtils.putPreference(PERFERENCE_KEY_NAME,JSON.stringify(newAccountBean));
})
Button('读取数据')
.type(ButtonType.Capsule)
.margin({top:10})
.onClick(() => {
this.preferenceUtils.getPreference(PERFERENCE_KEY_NAME).then((resultData) => {
this.message = resultData;
});
})
Button('修改数据')
.type(ButtonType.Capsule)
.margin({top:10})
.onClick(() => {
let newAccount: AccountBean = {id:1,name:'购物',price:'25'};
this.preferenceUtils.updatePreference(PERFERENCE_KEY_NAME,JSON.stringify(newAccount));
})
Button('删除数据')
.type(ButtonType.Capsule)
.margin({top:10})
.onClick(() => {
this.preferenceUtils.deletePreference(PERFERENCE_KEY_NAME);
})
}
.width('100%')
}
}