填充文件是否会更改其内容?

时间:2012-04-05 14:40:08

标签: padding

我正在努力实现一个将文件拆分为共享的算法,并且我有共享的数量。如果文件大小有余数(在模数与股数之后),我用零填充它。现在,我试图用字符串做这个,当我需要重新组合它时,我得到额外的填充。和文件一样吗?或者填充零可能不会改变文件内容?

如果确实发生了变化,有没有办法知道哪些零是填充零?

感谢名单!

1 个答案:

答案 0 :(得分:0)

是的,向文件添加任何内容都会更改其内容。在某些情况下,这可能并不重要,但对于通用解决方案,您永远不应该依赖它。

在您的特定情况下,填充文件是一个坏主意。

如果你有一个固定的块大小,每个文件部分都必须适合,那么就可以填充一个带有字节的文件部分,这些字节表示已经添加了多少字节。例如,如果添加了7个字节作为填充,则每个填充字节应为0x07。当您稍后重新组合这些部件时,您的程序首先必须剥离填充。在给定的示例中,它将读取部件的最后一个字节,即0x07,并得出结论,必须从文件末尾删除七个字节。

这种方法存在两个问题:

  • 您可以实现的最大填充为0xff = 255字节
  • 如果不需要填充,则必须添加完整的虚拟填充块,因为您的程序无法区分填充字节和原始内容。如果文件部分在0x01结束且不需要填充,则组合程序将从段中删除最后一个字节,从而破坏文件。

如果你这样做只是为了好玩,你可以看一下你可以在BSD或GNU / Linux上找到的split程序的源代码。提示:不需要填充。