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

无法访问文件,因为其他进程正在使用该文件

  •  3
  • Shyju  · 技术社区  · 17 年前

    我有一个ASP.NET程序,使用webClient类的DownloadFile方法从web下载一个文件,并对其进行一些修改。然后我用一个唯一的名称将它保存到另一个文件夹中

    谁能告诉我怎么解决这个问题吗。

    6 回复  |  直到 14 年前
        1
  •  6
  •   Joel Meador    17 年前

    一般来说,我认为您的代码应该是这样的。

    WebClient wc = new WebClient();
    wc.DownloadFile("http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png", "Foo.png");
    FileStream fooStream;
    using (fooStream = new FileStream("foo.png", FileMode.Open))
    {
        // do stuff
    }
    File.Move("foo.png", "foo2.png");
    
        2
  •  4
  •   Bevan    17 年前

    Process Monitor 是您想要的工具-将其设置为仅将输出过滤到您感兴趣的文件夹中的文件,您将能够看到对该文件的所有访问。

        3
  •  1
  •   Sadegh Firo    14 年前

    尝试以下操作,将filestream设置为异步模式(第3个参数)

    FileStream myStream = File.Create(fileName, results.Length,FileOptions.Asynchronous);
    //make sure you close the file
    myStream.Write(results, 0, results.Length);
    myStream.Flush();
    myStream.Close();
    myStream.Dispose();
    

    如果此操作失败,请重置文件b4的属性,然后访问它

    File.SetAttributes(Server.MapPath(sendFilepath), FileAttributes.Normal);
    
        4
  •  0
  •   EBGreen    17 年前

    在进行更改后是否显式关闭文件流?

        5
  •  0
  •   Moulde    17 年前

    我在写一个文本文件,然后试图打开它时遇到了完全相同的错误。

    解决方法是刷新写入程序,然后在写入文件后将其关闭。。

        6
  •  0
  •   Andyf Andyf    17 年前

    这可能会有帮助…对不起,这不是VB的C,但嘿。。。

    这很有效

        Dim fs As FileStream = Nothing
        fs = File.Create("H:\test.txt")
        fs.Close()
        File.Delete("H:\test.txt")
    

    这不会给出“另一个进程正在使用文件”错误

        File.Create("H:\test.txt")
        File.Delete("H:\test.txt")
    
    推荐文章