拦截文件系统写入流或字节数组

时间:2013-03-04 14:18:58

标签: c# file-io stream shapefile

我有一个带有.NET包装器的C库(在本例中为Shapelib),它使用类似C:\Path\To\Things\Filename.shp的路径将文件(Shapefiles)写入文件系统。但是,将文件写入文件系统实际上并不是我需要的。一旦编写完成,我就必须将它们读回流中,无论是通过网络传送它们,将它们添加到zip文件,还是其他任务。将它们写入文件系统意味着我只需要跟踪杂乱并且不可避免地以某种方式清理它们。

我不确定是否有PHP's stream protocol registers这样的路径可能就像stream://output.shp ...

是否可以拦截文件系统编写并在内存中处理整个任务?即使可以做到这一点,这是一种可怕的做法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

大家一致认为这“实际上是不可能的”。如果您确实需要确保在RAM中完成此操作,最好的办法是安装RAM磁盘驱动程序。谷歌搜索[Windows拦截文件输出]。或者查看Intercept outputs from a Program in Windows 7

也就是说,你写入磁盘的很多(也许是大多数)数据很可能会被缓存在内存中,因此右转并从磁盘读取数据并不是那么昂贵。你仍然有清理问题,但解决起来并不困难:只需使用try/finally块:

try
{
    // do everything
}
finally
{
    // clean up
}