HarmonyOS 解压中文文件名的压缩包时文件名乱码
zlib.decompressFile(inFile, outFileDir, options).then(() =>{ })使用该接口解压应用沙箱内的中文名的压缩包会导致解压出来的文件夹名称是乱码,且无法打开。如何设置可以正常解压中文名zip压缩包?以下是完整实现方法:
async onWindowStageCreate(windowStage: window.WindowStage) {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
let rawfile: Uint8Array;
//1.读rawfile
rawfile = this.context.resourceManager.getRawFileContentSync("测试文件夹.zip")
//2.获取沙箱目录
let context = this.context;
let pathDir = context.filesDir;
console.log('testRawfile---沙箱路径' + pathDir);
//3.使用file.write接口将字节数组形式的rawfile的文件写入到沙箱目录中
let filePath = pathDir + "/测试文件夹.zip";
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let rawFileBuffer = rawfile.buffer; //类型转换
let writeLen = fs.writeSync(file.fd, rawFileBuffer)
console.info("testRawfile--write data to file succeed and size is:" + writeLen);
fs.fdatasync(file.fd)
fs.closeSync(file);
await testDecompress(filePath,pathDir)
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
});
}
async function testDecompress(inFile:string,outFileDir:string) {
//4.解压
let options: zlib.Options = {
level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION
};
await zlib.decompressFile(inFile, outFileDir, options).then(() => {
console.log('testrawfile--decompress')
})
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 文件名长度限制是多少?
227浏览 • 1回复 待解决
HarmonyOS 打包后输入的文件名怎么自定义
155浏览 • 1回复 待解决
HarmonyOS app扩展的文件名,本地怎么安装?
239浏览 • 1回复 待解决
系统文件管理器支持的最长文件名是多少?
912浏览 • 1回复 待解决
HarmonyOS 字节码Har文件名混淆Bug,修改openharmony SDK规避
264浏览 • 1回复 待解决
HarmonyOS FileUri是否有解析出文件名的方法
20浏览 • 1回复 待解决
如何解压有密码的压缩包
1945浏览 • 0回复 待解决
HarmonyOS支持解压加密压缩包吗?
278浏览 • 1回复 待解决
HarmonyOS 修改文件名后,页面白屏,router.replaceUrl跳转路由报错
192浏览 • 1回复 待解决
#鸿蒙学习大百科#如何查询文件夹下所有文件名(包含子目录)?
331浏览 • 1回复 待解决
HarmonyOS Web组件这块,需要根据文件名获取mimeType,有相关C接口吗?
398浏览 • 1回复 待解决
fileio这个api可以获取一个目录下的所有文件名吗?
2371浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何处理文件名混淆造成的路径找不到问题?
286浏览 • 1回复 待解决
HarmonyOS 混淆问题:只混淆了目录名、文件名和变量名,但是类型、方法名称都没有被混淆
167浏览 • 1回复 待解决
HarmonyOS 使用minizip解压带密码的压缩包失败
273浏览 • 1回复 待解决
1.1 Windows找不到文件'javaw'。请确定文件名是否确定后,再试一次
19572浏览 • 1回复 待解决
zlib是否支持解压带密码的压缩包(.zip)?
2019浏览 • 1回复 待解决
HarmonyOS 是否有API支持解压加密的压缩包(zip)
366浏览 • 1回复 待解决
HarmonyOS 文件读取ArrayBuffer中文乱码的问题
161浏览 • 1回复 待解决
如何解决文件的中文乱码问题
2995浏览 • 3回复 待解决
#鸿蒙通关秘籍# 在鸿蒙应用中下载文件时,如何从响应头信息中正确获取下载文件名并保存到本地?
156浏览 • 0回复 待解决
HarmonyOS是否可支持7z,或者其他类型的压缩包解压能力
536浏览 • 1回复 待解决
实现文件解压缩和数据流解压缩
1612浏览 • 1回复 待解决
RN集成HarmonyOS应用的方式,解压空工程压缩包 HarmonyEmptyProject.zip无法生成bundle包
648浏览 • 1回复 待解决
解压后乱码根因是文件夹在压缩时是windows默认的编码格式,与ArkTS中的zlib.decompress解码方式不配套,导致文件夹名乱码。
1、采用ArkTS一套压缩和解压方式,如zlib.compress压缩和zlib.decompress解压。
2、可先采用如7zip等软件设置压缩参数cu=on,即可防止中文名乱码的情况。