可以在FileStream中重置FileOptions.DeleteOnDispose吗?

时间:2011-04-03 09:14:39

标签: c# filestream

在FileStream中的

我有时会使用FileOptions.DeleteOnDipose功能,这些功能会在我调用Dispose()方法时自动删除文件。如果我想在申请期间另行决定并且我想再次移除该标志并保留该文件该怎么办?

由于这是原始WindowsAPI的一个功能,我看了一下,但我找不到解决方案。

如果可能的话,有人知道如何重置旗帜吗?

由于 马丁

2 个答案:

答案 0 :(得分:0)

我就是这种情况我会使用常规配置,并在finally块中处理文件删除(或不删除)。我不知道如何重置它。

答案 1 :(得分:0)

创建文件后无法更改文件标志。您只能更改文件属性。我还看了一下Windows API,只有公开的方法是SetFileAttributes,它允许你只更改属性。

您应该考虑使用不同的逻辑来完成此操作,例如,当您希望删除文件并且不转发到System.IO.File.Delete()时,您自己实现FILE_FLAG_DELETE_ON_CLOSE

样品:

public class FileStreamEx : System.IO.FileStream
{
    private bool _deleteOnDispose = false;

    public FileStreamEx(string path, ....) : base(path, ...) { }

    public bool DeleteOnDispose
    {
        get { return _deleteOnDispose; }
        set { _deleteOnDispose = value; }
    }

    protected override void Dispose(bool disposing)
    {
        if (_deleteOnDispose)
        {
            System.IO.File.Delete(this.Name);
        }

        base.Dispose(disposing);
    }
}