C# ASP.NET可以';无法对文件执行操作,因为另一个进程正在使用该文件?
我在这个网站上搜索了一些解决方案,来解释为什么进程无法访问该文件,因为它正被另一个进程使用。不幸的是,他们似乎都有非常具体的问题答案(如电子邮件附件)。所以,我想我会在这里发帖,也许能得到一些帮助来解决我的问题。这段代码的最终目标只是获取文件的sha256散列并将文件保存在磁盘上C# ASP.NET可以';无法对文件执行操作,因为另一个进程正在使用该文件?,c#,asp.net,process,cryptography,sha256,C#,Asp.net,Process,Cryptography,Sha256,我在这个网站上搜索了一些解决方案,来解释为什么进程无法访问该文件,因为它正被另一个进程使用。不幸的是,他们似乎都有非常具体的问题答案(如电子邮件附件)。所以,我想我会在这里发帖,也许能得到一些帮助来解决我的问题。这段代码的最终目标只是获取文件的sha256散列并将文件保存在磁盘上 string hashedfile1name=""; string hashedfile2name=""; FileStream fs = null; HashAlgorithm hash = new SHA256Ma
string hashedfile1name="";
string hashedfile2name="";
FileStream fs = null;
HashAlgorithm hash = new SHA256Managed();
if (FileUpload1.HasFile)
try
{
FileUpload1.SaveAs("C:\\Uploads\\" + FileUpload1.FileName);
fs = File.OpenRead("C:\\Uploads\\" + FileUpload1.FileName);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
hashedfile1name = hash.ComputeHash(bytes).ToString();
File.Delete("C:\\Uploads\\" + FileUpload1.FileName);
Label1.Text = "File name: " + FileUpload1.PostedFile.FileName + " - " + hashedfile1name;
} catch (Exception ex) {
Label1.Text = "ERROR: " + ex.Message.ToString();
}
确保在读取文件后进行处理-即关闭蒸汽:
using (fs = File.OpenRead("C:\\Uploads\\" + FileUpload1.FileName))
{
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
hashedfile1name = hash.ComputeHash(bytes).ToString();
}
// Now you can delete it
File.Delete("C:\\Uploads\\" + FileUpload1.FileName);
您必须先关闭()文件流,然后才能删除它。您需要在删除文件之前关闭文件流。您打开了一个文件以供读取,并且正在尝试删除它。使用将一个
放在打开的周围并阅读,然后在其外部删除。感谢您的代码。它起了作用,值得使用正确的标记。另外,当我使用hashedfile1name保存文件时,该文件将保存为System.Byte[],这是为什么?哦,等等,nvm我用以下方法修复了它:hashedfile1name=Convert.ToBase64String(hash.ComputeHash(bytes));