我有这个命令 split -b 1800k file_name.tar.gz 但不知道如何在 Dart 或 Flutter 中使用它。
我有一个 tar.gz 文件,我想将其拆分为 JSON 格式的多个文件。 这在 Dart 中可能吗?
例如,一个原始文件:file_name.tar.gz
分割后:file_name_1.json、file_name_2.json、file_name_3.json、file_name_4.json、file_name_5.json
以下这个问题的解决方案
代码语言:javascript复制Future<List<File>> splitFileInSegment(File file,
{int chunkSize = 1800, required String cachePath, required String fileName}) async { int sizeOfFile = chunkSize * 1024;
ByteData bd = await rootBundle.load(file.path); List<int> bytes = bd.buffer.asUint8List(); List<List<int>> splitBytes = []; int isHalfFileNeeded = bytes.length % sizeOfFile; int numberOfFiles = bytes.length ~/ sizeOfFile; if (isHalfFileNeeded > 0) {
numberOfFiles = numberOfFiles 1;
} int offset = 0; for (int i = 0; i < numberOfFiles; i ) { int getLastIndex = 0; int bytesReached = (i 1) * sizeOfFile; if (bytesReached <= bytes.length) {
getLastIndex = bytesReached;
} else {
getLastIndex = offset isHalfFileNeeded;
} List<int> byteList = bytes.sublist(offset, getLastIndex);
splitBytes.add(byteList);
offset = sizeOfFile;
} List<File> files = []; for (int index = 0; index < splitBytes.length; index ) { final File tempFile = File("$cachePath/$fileName" "_" "$index.json");
File file = await tempFile.writeAsBytes(splitBytes[index]);
files.add(file);
} return files;
}