我有一个ASP.NET程序,我从web上使用webClient Class的DownloadFile方法下载文件,并对其做一些修改。那么我用一种独特的name.When它保存到另一个文件夹我收到此错误无法访问文件,因为它正在被另一个进程使用
该进程无法访问该文件“d:\ RD \ DOTNET \ ABC \ abcimageupload \影像\ TempStorage \ tempImage.jpg '因为它正在被另一个进程使用
有谁能告诉我如何解决这个问题。
我有一个ASP.NET程序,我从web上使用webClient Class的DownloadFile方法下载文件,并对其做一些修改。那么我用一种独特的name.When它保存到另一个文件夹我收到此错误无法访问文件,因为它正在被另一个进程使用
该进程无法访问该文件“d:\ RD \ DOTNET \ ABC \ abcimageupload \影像\ TempStorage \ tempImage.jpg '因为它正在被另一个进程使用
有谁能告诉我如何解决这个问题。
通常,我认为你的代码应该看起来像这样。
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");
您是否在进行更改后显式关闭文件流?
是的我正在使用file.Dispose()方法 – Shyju 2008-11-26 15:25:48
如果你手动*调用Dispose(),你是否在finally块中这样做?通常使用“使用”语句会更好。 – 2008-11-26 15:29:34
请发布相关代码... – tvanfosson 2008-11-26 15:30:00
我使用Sysinternals公司的工具来跟踪哪些应用程序访问文件,造成这种问题有很好的成功。
Process Monitor是您想要的工具 - 将其设置为将输出过滤为您感兴趣的文件夹中的文件,并且您将能够看到对文件的每次访问。
节省必须猜测问题是什么。
我不知道这是否会解决您的问题..
我写一个文本文件时,然后试图以后打开它得到了确切的同样的错误。
它被冲洗作家,然后写入文件后关闭它解决了..
尝试以下方法,你的文件流设置为Asynchronus模式(第三个参数)
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);
这可能会帮助....对不起它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")
请张贴一些代码 - 这是很难说问题出在哪里,否则。 – 2008-11-26 15:28:21