2024-08-04 08:21:14 +08:00
|
|
|
import 'dart:io';
|
2025-06-07 01:48:34 +08:00
|
|
|
|
2024-08-04 08:21:14 +08:00
|
|
|
import 'package:archive/archive_io.dart';
|
|
|
|
|
import 'package:path/path.dart';
|
|
|
|
|
|
|
|
|
|
extension ArchiveExt on Archive {
|
2025-06-07 01:48:34 +08:00
|
|
|
void addDirectoryToArchive(String dirPath, String parentPath) {
|
2024-08-04 08:21:14 +08:00
|
|
|
final dir = Directory(dirPath);
|
2025-10-14 15:13:52 +08:00
|
|
|
if (!dir.existsSync()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2024-08-04 08:21:14 +08:00
|
|
|
final entities = dir.listSync(recursive: false);
|
|
|
|
|
for (final entity in entities) {
|
|
|
|
|
final relativePath = relative(entity.path, from: parentPath);
|
|
|
|
|
if (entity is File) {
|
|
|
|
|
final data = entity.readAsBytesSync();
|
|
|
|
|
final archiveFile = ArchiveFile(relativePath, data.length, data);
|
|
|
|
|
addFile(archiveFile);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-16 11:23:09 +08:00
|
|
|
// void addTextFile<T>(String name, T raw) {
|
|
|
|
|
// final data = json.encode(raw);
|
|
|
|
|
// addFile(ArchiveFile.string(name, data));
|
|
|
|
|
// }
|
2024-08-04 08:21:14 +08:00
|
|
|
}
|