随笔您现在的位置是:首页 > 博客日志 > 随笔

____padding_file_0_如果您看到此文件,请升级到BitComet(比特彗星)0.85或以上版本

<a href='mailto:'>微wx笑</a>的头像微wx笑 2020-04-05随笔 12 0关键字: BT  BitComet  

使用BT下载工具下载资源的时候,下载下来的文件中有很多文件名是“____padding_file_0_如果您看到此文件,请升级到BitComet(比特彗星)0.85或以上版本”的文件。这个是BitComet

使用BT下载工具下载资源的时候,下载下来的文件中有很多文件名是“____padding_file_0_如果您看到此文件,请升级到BitComet(比特彗星)0.85或以上版本”的文件。这个是BitComet0.85版本以后加入的一个重要功能,即对大文件进行边界对齐,以优化文件下载和存储,防止一些错误。你只要知道,这些文件对其他文件没有影响,下载完毕后可以直接删除(当然也可以不下载,但是不推荐),并不是某些人所说的广告。le3无知

image.pngle3无知

从文件名来看,padding file 确实应该是此类文件。le3无知


le3无知

知道上找到 asdf_12346 的回答,提到原理如下:le3无知

我们知道BT下载的时候文件都是分块的,从不同的人那里下载不同的块,最后下载完整个文件。

块有一定的大小,每个任务中块的大小都是固定的,比如512K。
现在问题就来了,大部分文件大小不可能是整512K的倍数,那么如何对它们进行分块?一个文件还好,最后那不足512K的放在一块里就行了,那多个文件呢?这就涉及到一个边界对齐的问题。

假如有两个文件,第一个文件的大小是100个块多一点,第二个文件的大小是50块多一点。
标准的BT对它们的处理是当成一个连续的大文件对待的,那么第二个文件的前面一部分数据会被补在第一个文件后面。也就是说第101个块中有一部分是第一个文件最后的数据,还有一部分是第二个文件头部的数据。下载完了之后再分开。

这种方法比较容易出问题,经常会出现的情况是此块下载不完全或者分离错误,导致后面的文件头部出现错误。(特别是很多BT软件支持选择下载部分文件的时候,相邻的两个文件共用同一个块会出现很多问题)而要命的是,很多文件的头部是非常重要的,文件头损坏了往往导致整个文件不能读取。

很多BT软件进行多文件下载的时候,你经常会发现,原来我下好的100%文件,它前面有一个文件我没有选择下载,但它却占用了一部分空间(或者下载百分比不是0%),当我重新选择下载前面的这个文件的时候,后面的那个已经下好了的100%文件突然变成99%之类的情况。

更严重的情况如BitSpirit等很多BT软件下载多集电视连续剧的时候经常发生中间的某一集或某几集无法播放的情况。仔细察看发现是这些文件的头部没有正确下载(全是空的),导致媒体播放器根本不能识别这些视频文件。

这些问题都是文件边界没有对齐造成的。

BitComet对此的解决方法就是加入一些空文件,让每个大文件都补足块大小的整数倍。这样就可以保证每个文件的头部刚好对齐于块的大小,避免了上述情况的发生。
这些加进来的用于补齐文件的文件就是我们看到的“_____padding_file_0_XXXX”之类的文件。它出现在两个文件之间,而且大小刚好可以把前一个文件凑足块大小的整数倍。

这种文件虽然会占用一点空间,但是和整个要下载的文件相比实在是微不足道,而且它并不是某些人所说的“BitComet用于宣传的无用垃圾文件”(鄙视一下这些人),在下载多个大文件的时候可以有效减少问题的发生。le3无知


le3无知

但是我很奇怪,这样的问题不能通过一个索引文件来解决吗?le3无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/essay/2020-04-05/372.html

很赞哦! () 有话说 ()