我有这个命令 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
以下这个问题的解决方案
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;
??}