ResourcesUtils.ets
4.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import buffer from '@ohos.buffer';
import { BusinessError } from '@ohos.base';
import { Logger } from './Logger';
const TAG = "ResourcesUtils";
// 默认针对entry/src/main/resources/rawfile目录下的文件:
const JSON_FILE_NAME = "agconnect-services.json";
export class ResourcesUtils {
/**
* 获取资源字符串内容
* @param context
* @param filename 仅文件名(不包含路径,文件在src\main\resources\rawfile下),如:"agconnect-services.json",test.xml,
* @returns text 字符串
*/
static getResourcesText(context: Context, filename: string): Promise<string> {
return new Promise((success, error) => {
Logger.info(TAG, "ResourcesUtils getResourcesText filename:" + filename);
context.resourceManager.getRawFileContent(filename).then((content: Uint8Array) => {
if (!content) {
Logger.warn(TAG, 'getResourcesText then content is empty');
error("file is empty");
return
}
try {
let text = buffer.from(content).toString("utf8");
if (text) {
// Logger.info(TAG, "getResourcesText then text:" + text);
success(text);
} else {
Logger.warn(TAG, "getResourcesText then text is empty");
error("resources file text is empty");
}
} catch (err) {
// 转换异常
Logger.error(TAG, `getResourcesText catch err.: ${err}`);
}
}).catch((err: Error) => {
Logger.error(TAG, `getResourcesText getRawFileContent catch, error.name : ${err.name}, error.message:${err.message}`);
error(err);
})
})
}
/**
* 获取资源字符串内容
* @param context
* @param filename 仅文件名(不包含路径,文件在src\main\resources\rawfile下),如:"agconnect-services.json",test.xml,
* @returns text 字符串
*/
static getResourcesTextSync(context: Context, filename: string): string | null {
Logger.info(TAG, `getResourcesTextSync filename: ${filename}`);
try {
let content: Uint8Array = context.resourceManager.getRawFileContentSync(filename)
if (!content) {
Logger.warn(TAG, 'getResourcesTextSync content is empty');
return null
}
let text = buffer.from(content).toString("utf8");
if (text) {
// Logger.info(TAG, "getRawFileContentSync text:" + text);
} else {
Logger.warn(TAG, "getRawFileContentSync text is empty");
}
return text;
} catch (err) {
// 转换异常
Logger.error(TAG, `getResourcesText catch err.: ${err}`);
return null;
}
}
/**
* 获取资源文件并转为JSON
*
* @param appContext 上下文
* @param filename 仅文件名(不包含路径,文件在src\main\resources\rawfile下),如:"agconnect-services.json"
* SubscribeListData.json
* @returns JSON Object
*
* 调用方式:
* let compRes: MGHttp.ResponseDTO<BodyComponent> = await ResourcesUtils.getResourcesJson<MGHttp.ResponseDTO<BodyComponent>>(context, 'model/componentList.json');
*/
static getResourcesJson<R>(context: Context, filename: string): Promise<R> {
Logger.info(TAG, `getResourcesJson filename: ${filename}`);
return new Promise<R>((resolve, reject) => {
ResourcesUtils.getResourcesText(context, filename)
.then((text: string) => {
try {
// let config: R = JSON.parse(text)
let config: R = JSON.parse(text) as R;
if (config) {
Logger.info(TAG, "getResourcesJson parse JSON file success.");
// Logger.info(TAG, `getResourcesJson config : ${JSON.stringify(config)}`);
resolve(config);
} else {
reject("getResourcesJson parse JSON file result is empty");
}
} catch (err) {
// json解析异常
Logger.error(TAG, `getResourcesJson catch parse failed.: ${err}`);
reject(err)
}
})
.catch((error: BusinessError) => {
reject(error)
})
})
}
static getResourcesJsonSync<R>(context: Context, filename: string): R | null {
Logger.info(TAG, `getResourcesJsonSync filename: ${filename}`);
let text = ResourcesUtils.getResourcesTextSync(context, filename)
if (!text) {
Logger.warn(TAG, `getResourcesJsonSync file result is empty`);
return null
}
try {
// let config: R = JSON.parse(text)
let config: R = JSON.parse(text) as R;
return config
} catch (err) {
// json解析异常
Logger.error(TAG, `getResourcesJsonSync catch parse failed.: ${err}`);
return null
}
}
}