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');
// });
}