雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

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

2024-07-28 29

我有这个命令 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;
  }
更新于:1个月前
赞一波!2

文章评论

全部评论