【问题标题】:concatenate files without copying their contents连接文件而不复制其内容
【发布时间】:2011-01-16 16:46:10
【问题描述】:

(在 C/C++/Linux 中)

有没有办法连接文件 A 和文件 B(或实际上将一个 A 的内容附加到 B 的内容)仅通过更改文件系统而无需数据复制的开销?然后可以丢弃文件 A。

谢谢

【问题讨论】:

  • 所以如果你有 2 个文件,每个文件 1 个字节,你最终会得到 1 个包含 2 个字节的文件?这将是面向块的存储的一个问题——大多数现代商业非易失性存储都是面向块的,缺少 NOR 闪存。但是任何连接 SATA 或 USB 的东西,SD 卡也是如此。

标签: c++ linux file file-io


【解决方案1】:

如果文件是块结构的,并且操作系统支持块结构文件(如某些那样),那么(原则上)是的。但是当您询问 Linux 时,我假设您谈论的是面向字节流的文件系统,其中磁盘块可能未完全使用。在这种情况下,一些复制是不可避免的,实际上您必须复制整个文件。

【讨论】:

    【解决方案2】:

    您可以编写自己的文件系统(例如,使用 FUSE)提供伪文件以实现廉价连接。但我想这将是矫枉过正(对于任何用例),因为你必须关心引用和东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 2016-07-11
      • 2016-08-08
      相关资源
      最近更新 更多