YYPOST群发软件 发表于 2025-12-3 09:33:42

AIWROK配置读写功能演示示例

AIWROK配置读写功能演示示例




// AIWROK软件安卓交流QQ群711841924
// 苹果内测软件QQ群648461709
// AIWROK配置读写功能完整演示示例
// 本示例集成了所有配置读写相关功能,包含getConfig和setConfig的详细使用方法
// 注意:此代码需在AIWROK环境中运行,因为config对象由AIWROK提供

/**
* 配置文件路径常量
* 在实际应用中,根据不同平台和需求设置合适的路径
*/
var CONFIG_FILE_PATH = '/sdcard/aiwrok_config.ini';

/**
* 配置读写演示主函数
*/
function configDemo() {
    printl('===== AIWROK配置读写功能演示 =====');
   
    // 步骤1:演示写入配置
    demonstrateSetConfig();
   
    // 步骤2:演示读取配置
    demonstrateGetConfig();
   
    // 步骤3:演示默认值的使用
    demonstrateDefaultValue();
   
    // 步骤4:演示配置修改和更新
    demonstrateUpdateConfig();
   
    // 步骤5:演示实际应用场景
    demonstrateRealWorldScenario();
   
    printl('\n===== 演示完成 =====');
}

/**
* 演示setConfig方法的使用
*/
function demonstrateSetConfig() {
    printl('\n1. 演示写入配置(setConfig):');
   
    // 参数说明:
    // arg0: 配置文件路径
    // arg1: 配置项名称
    // arg2: 配置项的值
   
    try {
      // 写入用户配置
      config.setConfig(CONFIG_FILE_PATH, 'username', 'testuser');
      printl('- 已写入用户名配置');
      
      // 写入应用主题配置
      config.setConfig(CONFIG_FILE_PATH, 'theme', 'dark');
      printl('- 已写入主题配置');
      
      // 写入字体大小配置
      config.setConfig(CONFIG_FILE_PATH, 'font_size', '16');
      printl('- 已写入字体大小配置');
      
      // 写入布尔类型配置(以字符串形式存储)
      config.setConfig(CONFIG_FILE_PATH, 'auto_start', 'true');
      printl('- 已写入自动启动配置');
    } catch (e) {
      printl('- 写入配置时出错: ' + e.message);
    }
}

/**
* 演示getConfig方法的使用
*/
function demonstrateGetConfig() {
    printl('\n2. 演示读取配置(getConfig):');
   
    // 参数说明:
    // arg0: 配置文件路径
    // arg1: 配置项名称
    // arg2: 当配置不存在时的默认值
   
    try {
      // 读取用户名配置
      var username = config.getConfig(CONFIG_FILE_PATH, 'username', 'default_user');
      printl('- 用户名配置: ' + username);
      
      // 读取主题配置
      var theme = config.getConfig(CONFIG_FILE_PATH, 'theme', 'light');
      printl('- 主题配置: ' + theme);
      
      // 读取字体大小配置
      var fontSize = config.getConfig(CONFIG_FILE_PATH, 'font_size', '14');
      printl('- 字体大小配置: ' + fontSize);
      
      // 读取自动启动配置
      var autoStart = config.getConfig(CONFIG_FILE_PATH, 'auto_start', 'false');
      printl('- 自动启动配置: ' + autoStart);
    } catch (e) {
      printl('- 读取配置时出错: ' + e.message);
    }
}

/**
* 演示默认值的使用
*/
function demonstrateDefaultValue() {
    printl('\n3. 演示默认值的使用:');
   
    try {
      // 尝试读取一个不存在的配置项,应该返回默认值
      var nonExistentConfig = config.getConfig(CONFIG_FILE_PATH, 'non_existent_key', 'default_value');
      printl('- 不存在的配置项返回默认值: ' + nonExistentConfig);
      
      // 尝试从一个可能不存在的配置文件读取,也应该返回默认值
      var fromNonExistentFile = config.getConfig('/sdcard/non_existent_config.ini', 'test_key', 'fallback_value');
      printl('- 从不存在的文件读取返回默认值: ' + fromNonExistentFile);
    } catch (e) {
      printl('- 读取配置时出错: ' + e.message);
    }
}

/**
* 演示配置的更新
*/
function demonstrateUpdateConfig() {
    printl('\n4. 演示更新配置:');
   
    try {
      // 先读取当前主题配置
      var oldTheme = config.getConfig(CONFIG_FILE_PATH, 'theme', 'light');
      printl('- 更新前主题配置: ' + oldTheme);
      
      // 更新主题配置
      config.setConfig(CONFIG_FILE_PATH, 'theme', 'light');
      printl('- 已更新主题配置为light');
      
      // 验证更新是否成功
      var newTheme = config.getConfig(CONFIG_FILE_PATH, 'theme', 'light');
      printl('- 更新后主题配置: ' + newTheme);
    } catch (e) {
      printl('- 更新配置时出错: ' + e.message);
    }
}

/**
* 演示实际应用场景
*/
function demonstrateRealWorldScenario() {
    printl('\n5. 实际应用场景演示 - 用户设置管理:');
   
    try {
      // 假设这是应用启动时的配置加载过程
      printl('- 加载用户设置...');
      
      // 读取并应用用户设置
      var appSettings = {
            username: config.getConfig(CONFIG_FILE_PATH, 'username', 'Guest'),
            theme: config.getConfig(CONFIG_FILE_PATH, 'theme', 'light'),
            fontSize: parseInt(config.getConfig(CONFIG_FILE_PATH, 'font_size', '14'), 10),
            autoStart: config.getConfig(CONFIG_FILE_PATH, 'auto_start', 'false') === 'true'
      };
      
      // 打印加载的设置
      printl('- 已加载的用户设置:');
      printl('    * 用户名: ' + appSettings.username);
      printl('    * 主题: ' + appSettings.theme);
      printl('    * 字体大小: ' + appSettings.fontSize);
      printl('    * 自动启动: ' + (appSettings.autoStart ? '开启' : '关闭'));
      
      // 模拟用户修改设置并保存
      printl('\n- 模拟用户修改设置...');
      appSettings.fontSize = 18;
      appSettings.autoStart = false;
      
      // 保存修改后的设置
      printl('- 保存修改后的设置...');
      config.setConfig(CONFIG_FILE_PATH, 'font_size', appSettings.fontSize.toString());
      config.setConfig(CONFIG_FILE_PATH, 'auto_start', appSettings.autoStart ? 'true' : 'false');
      
      printl('- 设置保存成功!');
    } catch (e) {
      printl('- 应用场景演示出错: ' + e.message);
    }
}

/**
* 辅助函数:创建配置管理对象
* 提供更友好的配置管理接口
*/
function createConfigManager(filePath) {
    // 返回一个配置管理器对象
    return {
      filePath: filePath,
      
      // 设置配置项
      set: function(key, value) {
            try {
                config.setConfig(this.filePath, key, value.toString());
                return true;
            } catch (e) {
                printl('设置配置失败: ' + e.message);
                return false;
            }
      },
      
      // 获取配置项
      get: function(key, defaultValue) {
            try {
                return config.getConfig(this.filePath, key, defaultValue !== undefined ? defaultValue.toString() : '');
            } catch (e) {
                printl('获取配置失败: ' + e.message);
                return defaultValue !== undefined ? defaultValue : '';
            }
      },
      
      // 获取布尔类型配置
      getBoolean: function(key, defaultValue) {
            var value = this.get(key, defaultValue ? 'true' : 'false');
            return value.toLowerCase() === 'true' || value === '1';
      },
      
      // 获取数字类型配置
      getNumber: function(key, defaultValue) {
            var value = this.get(key, defaultValue !== undefined ? defaultValue.toString() : '0');
            return parseFloat(value) || 0;
      }
    };
}

/**
* 演示使用配置管理器的便捷性
*/
function demonstrateConfigManager() {
    printl('\n6. 演示配置管理器的使用:');
   
    try {
      // 创建配置管理器实例
      var appConfig = createConfigManager(CONFIG_FILE_PATH);
      
      // 使用配置管理器读写配置
      printl('- 使用配置管理器读取配置:');
      printl('    * 用户名: ' + appConfig.get('username', 'Anonymous'));
      printl('    * 字体大小(数字): ' + appConfig.getNumber('font_size', 14));
      printl('    * 自动启动(布尔): ' + appConfig.getBoolean('auto_start', false));
      
      // 使用配置管理器写入配置
      printl('- 使用配置管理器写入配置:');
      appConfig.set('app_version', '1.0.0');
      appConfig.set('last_login', new Date().toLocaleString());
      printl('    * 已写入应用版本和最后登录时间');
      
      // 验证写入结果
      printl('    * 应用版本: ' + appConfig.get('app_version'));
      printl('    * 最后登录时间: ' + appConfig.get('last_login'));
    } catch (e) {
      printl('- 配置管理器演示出错: ' + e.message);
    }
}

// 执行配置读写演示
configDemo();

// 执行配置管理器演示
demonstrateConfigManager();

/**
* 高级应用场景:配置备份与恢复
*/
function demonstrateConfigBackupAndRestore() {
    printl('\n7. 高级应用场景:配置备份与恢复:');
   
    try {
      var backupFilePath = '/sdcard/aiwrok_config_backup.ini';
      
      printl('- 创建配置备份...');
      // 读取当前所有配置项
      var username = config.getConfig(CONFIG_FILE_PATH, 'username', 'Guest');
      var theme = config.getConfig(CONFIG_FILE_PATH, 'theme', 'light');
      var fontSize = config.getConfig(CONFIG_FILE_PATH, 'font_size', '14');
      var autoStart = config.getConfig(CONFIG_FILE_PATH, 'auto_start', 'false');
      
      // 写入备份文件
      config.setConfig(backupFilePath, 'username', username);
      config.setConfig(backupFilePath, 'theme', theme);
      config.setConfig(backupFilePath, 'font_size', fontSize);
      config.setConfig(backupFilePath, 'auto_start', autoStart);
      config.setConfig(backupFilePath, 'backup_date', new Date().toLocaleString());
      
      printl('- 配置备份完成!备份路径: ' + backupFilePath);
      
      // 模拟恢复操作
      printl('\n- 模拟恢复配置...');
      var restoredUsername = config.getConfig(backupFilePath, 'username', 'Guest');
      var restoredTheme = config.getConfig(backupFilePath, 'theme', 'light');
      printl('- 从备份恢复的用户名: ' + restoredUsername);
      printl('- 从备份恢复的主题: ' + restoredTheme);
      printl('- 备份时间: ' + config.getConfig(backupFilePath, 'backup_date', '未知'));
    } catch (e) {
      printl('- 配置备份恢复演示出错: ' + e.message);
    }
}

/**
* 高级应用场景:配置批量操作
*/
function demonstrateBatchConfigOperations() {
    printl('\n8. 高级应用场景:配置批量操作:');
   
    try {
      // 批量写入配置
      printl('- 批量写入配置...');
      var batchConfig = {
            'app_name': 'AIWROK Demo App',
            'app_version': '1.2.3',
            'developer': 'AIWROK Team',
            'debug_mode': 'true',
            'max_retries': '3'
      };
      
      // 遍历对象并写入所有配置
      for (var key in batchConfig) {
            if (batchConfig.hasOwnProperty(key)) {
                config.setConfig(CONFIG_FILE_PATH, key, batchConfig);
                printl('    * 已设置: ' + key + ' = ' + batchConfig);
            }
      }
      
      // 批量读取配置
      printl('\n- 批量读取配置...');
      var keysToRead = ['app_name', 'app_version', 'developer', 'debug_mode', 'max_retries'];
      var readConfig = {};
      
      for (var i = 0; i < keysToRead.length; i++) {
            readConfig] = config.getConfig(CONFIG_FILE_PATH, keysToRead, '未设置');
      }
      
      // 输出读取的配置
      for (var key in readConfig) {
            if (readConfig.hasOwnProperty(key)) {
                printl('    * ' + key + ': ' + readConfig);
            }
      }
    } catch (e) {
      printl('- 批量配置操作演示出错: ' + e.message);
    }
}

// 执行高级应用场景演示
demonstrateConfigBackupAndRestore();
demonstrateBatchConfigOperations();

printl('\n提示:在实际使用中,请确保有正确的文件系统访问权限,并根据您的实际需求修改配置文件路径和配置项。');
printl('本示例已包含所有配置读写相关功能,无需创建其他文件。');

页: [1]
查看完整版本: AIWROK配置读写功能演示示例