如何在 Flutter 中将一个 tar.gz 文件拆分为多个文件?

2023-12-10 10:31:29 浏览数 (1)

我有这个命令 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;
  }

0 人点赞