gzip - 为什么在 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)
) 时,我看到前缀为的文件._
大小不同,因此它们实际上看起来是不同的文件,而且它们要小得多。
任何人都知道为什么会发生这种情况以及如何预防它?
解决方案
那是 Apple Double 格式,因此该 tar 文件几乎可以肯定最初来自 Mac。下划线文件包含扩展属性信息。您不一定需要阻止它。您可以忽略这些文件,或在提取过程中排除它们。使用 tar 选项在 Mac 端--no-mac-metadata
进行 tar 处理时也可以不包含它们。
推荐阅读
- javascript - 以编程方式将路由注入 JSX 路由器 switch 语句
- excel - How to get the earliest time each day and the last?
- sql - 关于 SQL 查询的建议
- android - How to set a wallpaper as the homescreen full screen
- sql - 在 PostgreSQL 中合并两个视图
- python-3.x - multiprocessing pool with a dictionary as one of the arguments?
- jenkins - Can we upload a string to s3 from jenkins
- c# - 比较一个列表是否是 C# 中另一个列表的子集的最佳方法
- javascript - Auto Save HTML file after contenteditable
- xampp - When I installed XAMPP Server, it could not connect to MySQL