如何结束这个过程
本文关键字:过程 结束 何结束 | 更新日期: 2023-09-27 18:08:10
本部分
if (File.Exists(filePath)) {
string status = new StreamReader(File.OpenRead(filePath)).ReadLine();
if (status != "SUCCEEDED") {
File.Delete(filePath);
createDb();
}
}
程序给出一个异常,消息为
进程无法访问文件''STATUS.txt',因为它正在被删除由其他进程使用。
如何解决这个问题?
像这样修改代码:
if (File.Exists(filePath))
{
string status;
using(var streamReader = new StreamReader(filePath))
{
status = streamReader.ReadLine();
}
if (status != "SUCCEEDED")
{
File.Delete(filePath);
createDb();
}
}
您应该在删除文件之前关闭流试试这个
if (File.Exists(filePath))
{
string status= string.Empty;
using (var stream = new StreamReader(File.OpenRead(filePath)))
{
status = stream.ReadLine();
}
if (status != "SUCCEEDED")
{
File.Delete(filePath);
createDb();
}
}
使用using
模式:
if (File.Exists(filePath)) {
using(var stream = new StreamReader(File.OpenRead(filePath)))
{
var status = stream.ReadLine();
if (status != "SUCCEEDED")
{
File.Delete(filePath);
createDb();
}
}
}
然后如果其他人正在使用该文件,您可以像下面这样打开流:
new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))
然后传递给StreamReader构造函数。
删除文件或写入using块前,请先关闭文件。
if (File.Exists(filePath))
{
string status= string.Empty;
using (var stream = new StreamReader(File.OpenRead(filePath)))
{
status = stream.ReadLine();
}
if (status != "SUCCEEDED")
{
File.Delete(filePath);
createDb();
}
}