【发布时间】:2013-11-20 22:19:50
【问题描述】:
我正在使用DeleteOnClose 选项创建一个临时文件:
var fileStream = File.Create(Path.GetTempFileName(), 4096, FileOptions.DeleteOnClose);
另一个类(我无法修改)将向该文件写入一些数据:
someObject.WriteDataToFile(fileStream);
然后我想检索数据以进行进一步处理,关闭流,并让文件自动删除。
但是someObject.WriteDataToFile(fileStream) 也调用fileStream.Close(),这会删除文件,所以我无法检索它的内容。
问题:如何防止fileStream 被someObject.WriteDataToFile() 中的代码关闭?
【问题讨论】:
-
为什么不在关闭后手动删除文件?
-
你不能修改那个代码,所以不要用 DeleteOnClose 创建文件
-
您可以在文件流周围编写一个装饰器,将“Close”实现为空方法,并在其 dispose 方法中执行 base.Close()。
-
我创建了很多这样的文件,其中一些会变得非常大,所以我使用
DeleteOnClose来避免它们不被删除(以防出现错误或进程终止等情况) .) -
@Marvin Smit:好主意,将其作为答案发布,以便我接受。
标签: c# filestream