我正在使用DeleteOnClose
选项创建一个临时文件:
var fileStream = File.Create(Path.GetTempFileName(), 4096, FileOptions.DeleteOnClose);
另一个类(我无法修改)会将一些数据写入此文件:
someObject.WriteDataToFile(fileStream);
然后我想检索数据以便进一步处理,关闭流,然后自动删除文件。
但someObject.WriteDataToFile(fileStream)
也会调用fileStream.Close()
,这将删除该文件,因此我无法检索其内容。
问题:如何使fileStream
中的代码无法关闭someObject.WriteDataToFile()
?
答案 0 :(得分:2)
您可以使用装饰器模式来解决此问题
e.g;
public class UnclosableFileStream : StreamDecorator
{
public UnclosableFileStream(Stream original) : base(original)
{
}
public override void Close()
{
}
public void RealClose()
{
base.Close();
}
}
public abstract class StreamDecorator : Stream
{
.... implements Stream base case
}
此示例使用自定义方法。您还可以考虑实现IDisposable接口并在Dispose()
上调用Close希望这有帮助,