使用硬链接模拟连锁文件?

时间:2011-12-16 13:07:00

标签: c# ffmpeg aforge hardlink

我有单个文件的多个部分,我希望第三方c ++ / c#插件作为单个文件读取。基本上,当插件文件阅读器到达一个文件部分的末尾时,我希望它继续下一个文件。

(对于任何感兴趣的人,该插件是Aforge.Net FFMpeg,我正在尝试导入VOB文件)

重新编程插件看起来非常重要。另一种解决方案是将文件部分复制到连接文件中,但这很慢,因为我处理的是许多GB的数据。

是否可以使用文件系统硬链接指向多个文件?或者是否有其他方法来“伪造”连接文件?使用命令行FFMpeg我可以使用'type'来实时传输一个连接文件,但我无法弄清楚如何使用这个插件在c#中实现这一点。

我在Windows 7上。

3 个答案:

答案 0 :(得分:1)

硬链接只能引用一个I节点,因此硬链接无济于事。但是,FIFO或命名管道将会。在UNIX shell中,您可以执行以下操作:

$ mkfifo catenated
$ cat a b c >catenated &

从文件“catenated”读取的程序现在将所有三个文件(a,b和c)连接在一起。一旦读取了所有三个文件的数据,“cat”程序将终止。 Microsoft Windows也具有此类功能(请参阅named pipe)。

请注意,管道不可寻找。如果读取连接数据的程序试图寻找,它将失败。如果连接需要可以查找,则需要使用更复杂的东西(虚拟文件系统?FUSE?)。

答案 1 :(得分:0)

不,不是,硬链接仅指向一个文件。

您的应用程序是第三方应用程序的复杂性增加了...我看到的唯一解决方案是编写一个动态对象,仅覆盖特定路径的文件方法 ,以便例如,read()将从第一个文件开始,然后在完成第三个文件之后继续第二个等等。呃。祝你好运!

答案 2 :(得分:0)

最好用avisynth处理。我使用它已经多年了,但是IIRC,您可以使用它来编写视频文件串联脚本,使它们显示为单个文件。我不记得细节,但脚本文件的行为就像它们是一个视频文件,可以在大多数视频编辑应用程序中用作源。