B2B网络软件
标题:
AIWROK软件Zip 高级操作复杂示例
[打印本页]
作者:
YYPOST群发软件
时间:
昨天 10:01
标题:
AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
1.png
(588.03 KB, 下载次数: 0)
下载附件
昨天 10:01
上传
2.png
(620.21 KB, 下载次数: 0)
下载附件
昨天 10:01
上传
// AIWROK 软件 - Zip 高级操作复杂示例
// 作者: AIWROK 开发团队
// 日期: 2024年6月
// 说明: 本示例演示了zip对象的复杂用法,包括下载、压缩、解压、进度显示、错误处理等
// 运行环境: AIWROK 软件 Android 版本
printl("===== AIWROK Zip 高级操作复杂示例开始 =====");
// 配置参数
var config = {
// 临时目录
tempDir: '/sdcard/aiwrok_zip_test',
// 下载文件目录
downloadDir: '/sdcard/aiwrok_zip_test/downloads',
// 压缩文件目录
zipDir: '/sdcard/aiwrok_zip_test/zips',
// 解压文件目录
unzipDir: '/sdcard/aiwrok_zip_test/unzipped',
// 要下载的文件列表
downloadFiles: [
{ name: 'test1.txt', content: '这是测试文件1的内容,用于演示zip操作。' },
{ name: 'test2.txt', content: '这是测试文件2的内容,用于演示zip操作的高级功能。' },
{ name: 'test3.txt', content: '这是测试文件3的内容,包含一些特殊字符:中文、英文、数字1234567890' }
],
// 测试图片base64(简化版)
testImageBase64: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=='
};
// 1. 准备工作:创建测试目录
printl("\n1. 准备工作:创建测试目录");
function prepareDirectories() {
try {
// 创建目录结构
var dirs = [config.tempDir, config.downloadDir, config.zipDir, config.unzipDir];
for (var i = 0; i < dirs.length; i++) {
if (!new java.io.File(dirs[i]).exists()) {
file.createFloder(dirs[i]);
printl("✓ 创建目录成功: " + dirs[i]);
} else {
printl("⚠️ 目录已存在: " + dirs[i]);
}
}
return true;
} catch (e) {
printl("✗ 创建目录失败: " + e.message);
return false;
}
}
// 2. 创建测试文件
printl("\n2. 创建测试文件");
function createTestFiles() {
try {
// 创建文本文件
for (var i = 0; i < config.downloadFiles.length; i++) {
var filePath = config.downloadDir + '/' + config.downloadFiles[i].name;
// 先创建文件
file.createFloder(filePath);
// 然后写入内容
try {
// 尝试使用不同的文件写入方法
var writeSuccess = false;
if (typeof 文件 !== 'undefined' && typeof 文件.删除写 === 'function') {
// 使用文件.删除写方法
writeSuccess = 文件.删除写(filePath, config.downloadFiles[i].content);
} else if (typeof file !== 'undefined' && typeof file.write === 'function') {
// 使用file.write方法
writeSuccess = file.write(filePath, config.downloadFiles[i].content);
} else {
// 直接使用Java代码写入文件
var javaFile = new java.io.File(filePath);
var writer = new java.io.BufferedWriter(new java.io.FileWriter(javaFile));
writer.write(config.downloadFiles[i].content);
writer.close();
writeSuccess = true;
}
if (writeSuccess) {
printl("✓ 创建文本文件成功: " + config.downloadFiles[i].name);
} else {
printl("✗ 创建文本文件失败: " + config.downloadFiles[i].name);
}
} catch (e) {
printl("✗ 创建文本文件异常: " + config.downloadFiles[i].name + " - " + e.message);
}
}
// 创建图片文件
var imagePath = config.downloadDir + '/test_image.png';
if (file.base64ToFile(config.testImageBase64, imagePath)) {
printl("✓ 创建图片文件成功: test_image.png");
} else {
printl("✗ 创建图片文件失败");
}
return true;
} catch (e) {
printl("✗ 创建测试文件失败: " + e.message);
return false;
}
}
// 3. 进度显示函数
function showProgress(message, current, total) {
var percent = Math.round((current / total) * 100);
printl(message + " " + percent + "% (" + current + "/" + total + ")");
}
// 4. 压缩操作示例
printl("\n3. 压缩操作示例");
function zipOperations() {
try {
// 示例1: 压缩整个文件夹
printl("\n3.1 压缩整个文件夹");
var folderZipPath = config.zipDir + '/entire_folder.zip';
if (zip.zipFolder(config.downloadDir, folderZipPath)) {
printl("✓ 压缩整个文件夹成功: " + folderZipPath);
printl(" 文件大小: " + file.getSize(folderZipPath) + " 字节");
} else {
printl("✗ 压缩整个文件夹失败");
}
// 示例2: 创建多个子文件夹并压缩特定文件
printl("\n3.2 创建多子文件夹并压缩");
var subdir1 = config.tempDir + '/subdir1';
var subdir2 = config.tempDir + '/subdir2';
// 创建子文件夹
file.createFloder(subdir1);
file.createFloder(subdir2);
// 复制文件到子文件夹
file.copy(config.downloadDir + '/test1.txt', subdir1 + '/test1.txt');
file.copy(config.downloadDir + '/test2.txt', subdir2 + '/test2.txt');
file.copy(config.downloadDir + '/test_image.png', subdir1 + '/test_image.png');
// 压缩整个临时目录(包含子文件夹)
var multiZipPath = config.zipDir + '/multi_folder.zip';
if (zip.zipFolder(config.tempDir, multiZipPath)) {
printl("✓ 压缩多子文件夹成功: " + multiZipPath);
printl(" 文件大小: " + file.getSize(multiZipPath) + " 字节");
} else {
printl("✗ 压缩多子文件夹失败");
}
return true;
} catch (e) {
printl("✗ 压缩操作失败: " + e.message);
printl(" 错误详情: " + e.toString());
return false;
}
}
// 5. 解压操作示例
printl("\n4. 解压操作示例");
function unzipOperations() {
try {
// 示例1: 解压整个zip文件
printl("\n4.1 解压整个zip文件");
var zipPath = config.zipDir + '/entire_folder.zip';
var targetUnzipDir = config.unzipDir + '/entire_unzip';
// 创建目标目录
file.createFloder(targetUnzipDir);
if (file.unZipFile(zipPath, targetUnzipDir)) {
printl("✓ 解压整个zip文件成功: " + zipPath);
// 列出解压后的文件
var files = file.getFilesAllName(targetUnzipDir);
if (files && files.length > 0) {
printl(" 解压后的文件:");
for (var i = 0; i < files.length; i++) {
printl(" " + (i + 1) + ". " + files[i]);
}
}
} else {
printl("✗ 解压整个zip文件失败");
}
// 示例2: 解压多个zip文件到不同目录
printl("\n4.2 批量解压多个zip文件");
var zipFiles = file.getFilesAllName(config.zipDir);
if (zipFiles && zipFiles.length > 0) {
for (var i = 0; i < zipFiles.length; i++) {
var zipFileName = zipFiles[i];
if (zipFileName.endsWith('.zip')) {
var zipFilePath = config.zipDir + '/' + zipFileName;
var targetDir = config.unzipDir + '/batch_unzip_' + i;
// 创建目标目录
file.createFloder(targetDir);
showProgress("正在解压 " + zipFileName + "...", i + 1, zipFiles.length);
if (file.unZipFile(zipFilePath, targetDir)) {
printl("✓ 批量解压成功: " + zipFileName);
} else {
printl("✗ 批量解压失败: " + zipFileName);
}
}
}
}
return true;
} catch (e) {
printl("✗ 解压操作失败: " + e.message);
printl(" 错误详情: " + e.toString());
return false;
}
}
// 6. 高级功能:压缩特定类型的文件
printl("\n5. 高级功能:压缩特定类型的文件");
function zipSpecificFiles() {
try {
// 创建包含不同类型文件的目录
var mixedDir = config.tempDir + '/mixed_files';
file.createFloder(mixedDir);
// 创建不同类型的文件
var testFiles = [
{ path: mixedDir + '/text1.txt', content: '文本文件1' },
{ path: mixedDir + '/text2.txt', content: '文本文件2' },
{ path: mixedDir + '/data.csv', content: '列1,列2,列3\n值1,值2,值3\n值4,值5,值6' }
];
for (var i = 0; i < testFiles.length; i++) {
var filePath = testFiles[i].path;
var content = testFiles[i].content;
// 先创建文件
file.createFloder(filePath);
// 然后写入内容
try {
var writeSuccess = false;
if (typeof 文件 !== 'undefined' && typeof 文件.删除写 === 'function') {
writeSuccess = 文件.删除写(filePath, content);
} else if (typeof file !== 'undefined' && typeof file.write === 'function') {
writeSuccess = file.write(filePath, content);
} else {
var javaFile = new java.io.File(filePath);
var writer = new java.io.BufferedWriter(new java.io.FileWriter(javaFile));
writer.write(content);
writer.close();
writeSuccess = true;
}
if (writeSuccess) {
printl("✓ 创建文件成功: " + filePath);
} else {
printl("✗ 创建文件失败: " + filePath);
}
} catch (e) {
printl("✗ 创建文件异常: " + filePath + " - " + e.message);
}
}
// 仅压缩txt文件
printl("\n5.1 仅压缩txt文件");
var txtZipPath = config.zipDir + '/only_txt_files.zip';
// 获取所有txt文件
var txtFiles = file.getTypeFilesName(mixedDir, '.txt');
if (txtFiles && txtFiles.length > 0) {
// 创建临时目录存放要压缩的txt文件
var txtTempDir = config.tempDir + '/txt_only_temp';
file.createFloder(txtTempDir);
// 复制txt文件到临时目录
for (var i = 0; i < txtFiles.length; i++) {
file.copy(mixedDir + '/' + txtFiles[i], txtTempDir + '/' + txtFiles[i]);
}
// 压缩临时目录
if (zip.zipFolder(txtTempDir, txtZipPath)) {
printl("✓ 仅压缩txt文件成功: " + txtZipPath);
printl(" 压缩了 " + txtFiles.length + " 个txt文件");
} else {
printl("✗ 仅压缩txt文件失败");
}
// 删除临时目录
file.deleteFilesOfDir(txtTempDir);
}
return true;
} catch (e) {
printl("✗ 压缩特定类型文件失败: " + e.message);
return false;
}
}
// 7. 错误处理示例
printl("\n6. 错误处理示例");
function errorHandlingExamples() {
try {
printl("\n6.1 测试不存在的文件解压");
var nonExistentZip = config.zipDir + '/non_existent.zip';
var targetDir = config.unzipDir + '/error_test';
file.createFloder(targetDir);
try {
if (file.unZipFile(nonExistentZip, targetDir)) {
printl("✓ 解压不存在的文件成功(这是一个错误)");
} else {
printl("✓ 正确处理了不存在的文件解压请求");
}
} catch (e) {
printl("✓ 正确捕获了解压不存在文件的异常: " + e.message);
}
printl("\n6.2 测试压缩空目录");
var emptyDir = config.tempDir + '/empty_dir';
file.createFloder(emptyDir);
var emptyZipPath = config.zipDir + '/empty.zip';
try {
if (zip.zipFolder(emptyDir, emptyZipPath)) {
printl("✓ 压缩空目录成功");
printl(" 空zip文件大小: " + file.getSize(emptyZipPath) + " 字节");
} else {
printl("✗ 压缩空目录失败");
}
} catch (e) {
printl("✓ 正确捕获了压缩空目录的异常: " + e.message);
}
return true;
} catch (e) {
printl("✗ 错误处理示例失败: " + e.message);
return false;
}
}
// 8. 清理工作
printl("\n7. 清理工作");
function cleanUp() {
try {
// 删除所有测试目录和文件
if (file.deleteFilesOfDir(config.tempDir)) {
printl("✓ 成功清理所有测试文件和目录: " + config.tempDir);
} else {
printl("✗ 清理测试文件和目录失败,可能需要手动清理");
}
return true;
} catch (e) {
printl("✗ 清理工作失败: " + e.message);
printl("提示: 请手动清理剩余文件和目录: " + config.tempDir);
return false;
}
}
// 执行流程
try {
// 1. 准备目录
if (!prepareDirectories()) {
throw new Error("准备目录失败");
}
// 2. 创建测试文件
if (!createTestFiles()) {
throw new Error("创建测试文件失败");
}
// 3. 执行压缩操作
if (!zipOperations()) {
throw new Error("压缩操作失败");
}
// 4. 执行解压操作
if (!unzipOperations()) {
throw new Error("解压操作失败");
}
// 5. 执行特定文件压缩
if (!zipSpecificFiles()) {
throw new Error("压缩特定类型文件失败");
}
// 6. 执行错误处理示例
if (!errorHandlingExamples()) {
throw new Error("错误处理示例失败");
}
// 7. 清理工作
if (!cleanUp()) {
throw new Error("清理工作失败");
}
printl("\n🎉 所有操作执行成功!");
} catch (e) {
printl("\n❌ 执行过程中发生错误: " + e.message);
printl(" 错误详情: " + e.toString());
printl("提示: 请检查错误信息并手动清理可能的残留文件");
}
printl("\n===== AIWROK Zip 高级操作复杂示例结束 =====");
printl("\n注意事项:");
printl("1. 所有操作都需要适当的文件系统权限");
printl("2. 大型文件的压缩和解压可能需要较长时间");
printl("3. 建议在实际应用中添加更多的错误处理和进度显示");
printl("4. 可以根据需要修改配置参数以适应不同的应用场景");
printl("5. 本示例演示了zip.unZipFile和zip.zipFolder的高级用法");
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2