obfuscate method

void obfuscate()

將底下的圖片資源(1. 檔名, 2. 路徑)混淆

Implementation

void obfuscate() {
  if (imagesPath == null) {
    print('尚未取得圖片資源路徑, 請先執行 searchImage()');
    return;
  }

  obfuscatePathList.clear();

  // 先將所有的檔案隨機重新命名
  for (var element in allFile) {
    // 先取得檔案的路徑
    final filepath = element.path;

    // 去除圖片資源的路徑
    final relativePath = filepath.replaceAll(imagesPath!, '');

    // 開始針對路徑的每一層進行混淆
    final relativePathList = relativePath.split('/');
    relativePathList.removeAt(0);

    // 混淆後的路徑列表
    final obfuscateRelativePathList =
    relativePathList.map((e) => _randomString(e, 10)).toList();

    // 混淆後的相對路徑
    final obfuscatePath = obfuscateRelativePathList.join('/');

    // 混淆後的絕對路徑
    final obfuscateAbsolutePath = join(imagesPath!, obfuscatePath);

    // print('混淆後絕對: $imagesPath => $obfuscatePath => $obfuscateAbsolutePath');

    // 一層一層檢查資料夾是否存在
    File(obfuscateAbsolutePath).parent.createSync(recursive: true);

    element.renameSync(obfuscateAbsolutePath);

    compressImage(obfuscateAbsolutePath);

    obfuscatePathList.add(ObfuscatePath(filepath, obfuscateAbsolutePath));
  }

  // 接著將所有的資料夾也重新命名
  for (var element in allDir) {
    // 先取得檔案的路徑
    final directoryPath = element.path;

    // 去除圖片資源的路徑
    final relativePath = directoryPath.replaceAll(imagesPath!, '');

    // 開始針對路徑的每一層進行混淆
    final relativePathList = relativePath.split('/');
    relativePathList.removeAt(0);

    // 混淆後的路徑列表
    final obfuscateRelativePathList =
    relativePathList.map((e) => _randomString(e, 10)).toList();

    // 混淆後的相對路徑
    final obfuscatePath = obfuscateRelativePathList.join('/');

    // 混淆後的絕對路徑
    final obfuscateAbsolutePath = join(imagesPath!, obfuscatePath);

    if (!Directory(obfuscateAbsolutePath).existsSync()) {
      // 資料若不存在則創建
      element.renameSync(obfuscateAbsolutePath);
    }

    // 刪除原資料夾
    if (element.existsSync()) {
      element.deleteSync(recursive: true);
    }

    obfuscatePathList.add(ObfuscatePath(element.path, obfuscateAbsolutePath));
  }

  // // 檔案對應
  // for (var element in obfuscatePathList) {
  //   print('${element.originPath} -> ${element.obfuscatePath}');
  // }
  //
  // print('映射表');
  // randomStringMap.forEach((key, value) {
  //   print('$key -> $value');
  // });
}