代码之家  ›  专栏  ›  技术社区  ›  j76goatboy

C#在隔离状态下创建和打开文件引发IOException

  •  0
  • j76goatboy  · 技术社区  · 9 年前

    我做了一个小程序来演示我的问题。它创建文件,然后尝试在同一地址打开它。路径上的IOException共享冲突在尝试打开文件时引发。为什么会发生这种情况?我可以看到文件正在创建。

    using System;
    using System.IO;
    
    namespace FileTestProject
    {
    class MainClass
    {
        private static string address = "/Users/jamessullivan/Desktop/testFile.dat";
    
        public static void Main ()
        {
            File.Create(address);
            FileStream file = File.Open(address, FileMode.Open);
        }
    }
    }
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   Hamlet Hakobyan    9 年前

    您可以在查看文档时看到问题。

    虽然你的例子毫无意义,但这里是对问题的解释。

    Create.File(string) 返回 FileStream 它包含名为文件句柄的非托管资源,因此您无法创建另一个 文件流 其应保持相同的手柄。

    因此,您应该在重用资源后释放资源。

    这是一个简单的概念:

    using(File.Create(address))
    {}
    
    using(FileStream file = File.Open(address, FileMode.Open)
    {
    }