在windows api中是否有O(1)方式来连接2个文件?

时间:2009-01-11 07:40:28

标签: c++ winapi visual-c++

在Windows API中是否有O(1)方法来连接2个文件?

O(1)关于不必读入整个第二个文件并将其写入要追加的文件。因此,与处理的O(n)字节相反。

我认为这应该可以在文件系统驱动程序级别进行,我认为没有可用的用户模式API,但我想我会问。

3 个答案:

答案 0 :(得分:4)

如果您的应用程序只读取“新文件”,那么您可以在没有实际连接磁盘的情况下离开。

您可以实现一个流接口,其行为就像连接了两个文件一样,然后使用该流,而不是应用框架使用的默认文件流实现。

如果这对您不起作用,并且您正在使用Windows,则可以始终创建重新分析点和文件系统过滤器。我相信如果你创建一个“迷你过滤器”,它将在用户模式下运行,但我不确定。

您可以在此处找到有关它的更多信息:

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx

答案 1 :(得分:3)

不,没有。

你最希望的是O(n),其中n是两个文件中较短者的长度。

答案 2 :(得分:2)

从理论的角度来看,这是可能的(在磁盘上),条件是:

  • 第二个文件被销毁
  • 连接符合文件系统的片段对齐(例如,在群集边界上发生)