首页 > 解决方案 > 为什么在 Flutter 中提取档案会显示不在档案中以 _. 为前缀的文件?

问题描述

我有一个 tar + gzipped 文件,我在 Flutter 应用程序中下载并解压缩/提取。提取代码如下所示:

final gzDecoder = GZipDecoder();
final tar = await gzDecoder.decodeBytes(file.readAsBytesSync());
final tarDecoder = TarDecoder();
final archive = tarDecoder.decodeBytes(tar);
for (final file in archive) {
    print(file)
    ...

当我像上面那样打印出存档中的所有文件时,我看到如下内容:

./question_7815.mp3
./._question_7814.mp3

原始档案只有./question_7815.mp3(不是以._.

此外,在打印文件大小 ( print(file.size)) 时,我看到前缀为的文件._大小不同,因此它们实际上看起来是不同的文件,而且它们要小得多。

任何人都知道为什么会发生这种情况以及如何预防它?

标签: gziptar

解决方案


那是 Apple Double 格式,因此该 tar 文件几乎可以肯定最初来自 Mac。下划线文件包含扩展属性信息。您不一定需要阻止它。您可以忽略这些文件,或在提取过程中排除它们。使用 tar 选项在 Mac 端--no-mac-metadata进行 tar 处理时也可以不包含它们。


推荐阅读