为什么在 Flutter 中提取存档文件时显示的文件不在以 _. 为前缀的存档文件中?
Why does extracting an archive in Flutter show files not in the archive that are prefixed with _.?
我在 Flutter 应用程序中下载了 tar + gzip 文件和 decompress/extract。提取代码如下所示:
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)
)我看到前缀为._
的文件大小不一样,所以它们实际上看起来是不同的文件,而且它们小得多。
有人知道为什么会发生这种情况以及可能如何预防吗?
那是 Apple Double 格式,因此 tar 文件几乎可以肯定最初来自 Mac。下划线文件包含扩展属性信息。您不一定需要阻止它。您可以忽略这些文件,或在提取过程中排除它们。当 tar 在 Mac 侧响铃以及 tar 的 --no-mac-metadata
选项时,可以不包括它们。
我在 Flutter 应用程序中下载了 tar + gzip 文件和 decompress/extract。提取代码如下所示:
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)
)我看到前缀为._
的文件大小不一样,所以它们实际上看起来是不同的文件,而且它们小得多。
有人知道为什么会发生这种情况以及可能如何预防吗?
那是 Apple Double 格式,因此 tar 文件几乎可以肯定最初来自 Mac。下划线文件包含扩展属性信息。您不一定需要阻止它。您可以忽略这些文件,或在提取过程中排除它们。当 tar 在 Mac 侧响铃以及 tar 的 --no-mac-metadata
选项时,可以不包括它们。