zoukankan      html  css  js  c++  java
  • c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件

    C# IO 读取文件,提示文件正被另一进程占用,因此无法访问该文件;

    读取代码:

    var fStream = new FileStream(Path, FileMode.OpenOrCreate);

    使用该方式读取文件,如果文件被打开,则会抛出异常。

    正确的读取方式如下:

    var fStream = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.ReadWrite,FileShare.ReadWrite);

    注解:

    一个文件同时被多个进程同时访问是很正常的。参数 FileShare 可以指定该文件以何种共享的方式被多个进程同时访问。

        //
        // 摘要:
        //     包含用于控制的访问其他类型的常数 System.IO.FileStream 对象可以具有相同的文件。
        [ComVisible(true)]
        [Flags]
        public enum FileShare
        {
            //
            // 摘要:
            //     拒绝共享当前文件。 在关闭文件之前,任何请求打开的文件 (此进程或另一个进程) 将失败。
            None = 0,
            //
            // 摘要:
            //     允许以后打开文件进行读取。 如果未指定此标志,任何请求打开文件进行读取 (通过这一过程或另一个进程) 无法关闭文件之前。 但是,即使指定了此标志,其他权限可能仍然需要访问该文件。
            Read = 1,
            //
            // 摘要:
            //     允许以后打开文件进行写入。 如果未指定此标志,任何请求打开文件进行写入 (通过这一过程或另一个进程) 无法关闭文件之前。 但是,即使指定了此标志,其他权限可能仍然需要访问该文件。
            Write = 2,
            //
            // 摘要:
            //     允许以后打开的文件进行读取或写入。 如果未指定此标志,任何请求打开文件进行读取或写入 (通过这一过程或另一个进程) 将失败,在关闭文件之前。 但是,即使指定了此标志,其他权限可能仍然需要访问该文件。
            ReadWrite = 3,
            //
            // 摘要:
            //     允许以后删除文件。
            Delete = 4,
            //
            // 摘要:
            //     使文件句柄由子进程继承。 这是不直接支持 Win32。
            Inheritable = 16
        }
  • 相关阅读:
    通过欧拉计划学Rust编程(第500题)
    通过欧拉计划学Rust编程(第54题)
    刷完欧拉计划中难度系数为5%的所有63道题,我学会了Rust中的哪些知识点?
    用欧拉计划学Rust编程(第26题)
    通过欧拉计划学习Rust编程(第22~25题)
    用欧拉计划学Rust语言(第17~21题)
    用欧拉计划学习Rust编程(第13~16题)
    用欧拉计划学Rust语言(第7~12题)
    通过欧拉计划学Rust(第1~6题)
    《区块链生存训练2.0》PDF
  • 原文地址:https://www.cnblogs.com/runningRain/p/14023223.html
Copyright © 2011-2022 走看看