前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 Flutter 中将一个 tar.gz 文件拆分为多个文件?

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

作者头像
很酷的站长
发布2023-12-10 10:31:29
1000
发布2023-12-10 10:31:29
举报
如何在 Flutter 中将一个 tar.gz 文件拆分为多个文件?
如何在 Flutter 中将一个 tar.gz 文件拆分为多个文件?

我有这个命令 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;
  }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档