dart读写json文件并修改

import 'dart:convert';
import 'dart:io';

void main() async {
// 定义 JSON 文件的路径
String filePath = './oh-package.json5';

try {
// 读取 JSON 文件内容
File packageFile = await File(filePath);

final String packageConfig = packageFile.readAsStringSync();
  final Map<String, dynamic> config = json.decode(packageConfig) as Map<String, dynamic>;
  final Map<String, dynamic> overrides = config['overrides'] as Map<String, dynamic>? ?? <String, dynamic>{};

  // for (final Plugin plugin in plugins) {
  //   overrides[plugin.name] = _relative(
  //     globals.fs.path.join(plugin.path, OhosPlugin.kConfigKey),
  //     flutterProject.ohos.ohosRoot.path,
  //   );
  // }

  Directory dir = Directory("./har");
    
    overrides.clear();
    overrides["@ohos/flutter_ohos"] ='file:./har/flutter.har';
    overrides["@ohos/flutter_module"] ='file:./har/flutter_module.har';
    // 遍历文件夹中的每个实体(文件或文件夹)
    dir.listSync(recursive: false).forEach((FileSystemEntity entity) {
      if (entity is Directory) {
        // 如果是文件夹,则递归调用该函数继续遍历
        print('文件夹: ${entity.path}');
      } else if (entity is File) {
        // 如果是文件,则打印文件路径
        print('文件: ${entity.path}');
        var name = entity.uri.pathSegments.last;
        var n=name.substring(0,name.indexOf("."));
        if(n == "flutter"){
          
        }else if(n == "flutter_module"){
          
        }else{
          overrides[n] ='file:./har/$n.har';
        }
        
      }
    });
  
  // final String relativePath = _relative(flutterProject.ohos.flutterModuleDirectory.path, flutterProject.ohos.ohosRoot.path);
  // overrides['@ohos/flutter_module'] = 'file:./$relativePath';
  // overrides['@ohos/flutter_ohos'] = 'file:./har/flutter.har';
  final String configNew = const JsonEncoder.withIndent('  ').convert(config);
  packageFile.writeAsStringSync(configNew, flush: true);

print('JSON 文件已成功修改并覆盖。');

} catch (e) {
print('处理 JSON 文件时出现错误: $e');
}
}

// void recursiveTraverseDirectory(String path) {
// Directory dir = Directory(path);
// if (!dir.existsSync()) {
// print('指定的文件夹不存在: $path');
// return;
// }

// // 遍历文件夹中的每个实体(文件或文件夹)
// dir.listSync(recursive: false).forEach((FileSystemEntity entity) {
// if (entity is Directory) {
// // 如果是文件夹,则递归调用该函数继续遍历
// print('文件夹: {entity.path}'); // recursiveTraverseDirectory(entity.path); // } else if (entity is File) { // // 如果是文件,则打印文件路径 // print('文件:{entity.path}');
// }
// });
// }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容