C# 拦截文件系统对流或字节数组的写入
我有一个带有.NET包装器(在本例中)的C库,它使用类似C# 拦截文件系统对流或字节数组的写入,c#,file-io,stream,shapefile,C#,File Io,Stream,Shapefile,我有一个带有.NET包装器(在本例中)的C库,它使用类似C:\path\to\Things\Filename.shp的路径将文件(shapefile)写入文件系统。然而,将文件写入文件系统并不是我真正需要的。一旦它们被写入,我就必须将它们读回流中,以便通过web交付它们、将它们添加到zip文件或执行其他任务。将它们写入文件系统意味着我只需跟踪杂乱无章的内容,并不可避免地以某种方式清理它们 我不确定是否有类似路径的地方stream://output.shp 是否可以拦截文件系统写入并在内存中处理整
C:\path\to\Things\Filename.shp的路径将文件(shapefile)写入文件系统。然而,将文件写入文件系统并不是我真正需要的。一旦它们被写入,我就必须将它们读回流中,以便通过web交付它们、将它们添加到zip文件或执行其他任务。将它们写入文件系统意味着我只需跟踪杂乱无章的内容,并不可避免地以某种方式清理它们
我不确定是否有类似路径的地方stream://output.shp
是否可以拦截文件系统写入并在内存中处理整个任务?即使可以做到这一点,这是可怕的做法吗?谢谢 大家一致认为这是“几乎不可能的”。如果您确实需要确保在RAM中实现这一点,那么最好安装RAM磁盘驱动程序。在谷歌上搜索[windows intercept file output]。或者退房 也就是说,您写入磁盘的大部分数据很可能都会被缓冲在内存中,所以向右转并从磁盘读取数据不会太贵。您仍然存在清理问题,但解决起来并不是那么困难:只需使用
try/finally
块:
try
{
// do everything
}
finally
{
// clean up
}
大家一致认为这是“几乎不可能的”。如果你真的需要确保这是在RAM中完成的,最好的办法是安装一个RAM磁盘驱动程序。在谷歌上搜索[windows intercept file output]。或者退房 也就是说,您写入磁盘的大部分数据很可能都会被缓冲在内存中,所以向右转并从磁盘读取数据不会太贵。您仍然存在清理问题,但解决起来并不是那么困难:只需使用
try/finally
块:
try
{
// do everything
}
finally
{
// clean up
}
谢谢我并不是真的很在意性能,这只是避免FS混乱和可能的命名冲突的问题。我将使用
try/finally
制定一个好的解决方案!最后我制作了一个IDisposble
processor类,它将在构造函数中创建一个临时文件夹,并在Dispose中删除它。使用块使用包装实例并完成!谢谢我并不是真的很在意性能,这只是避免FS混乱和可能的命名冲突的问题。我将使用try/finally
制定一个好的解决方案!最后我制作了一个IDisposble
processor类,它将在构造函数中创建一个临时文件夹,并在Dispose中删除它。使用块使用包装实例并完成!