在这部分
if (File.Exists(filePath)) {
string status = new StreamReader(File.OpenRead(filePath)).ReadLine();
if (status != "SUCCEEDED") {
File.Delete(filePath);
createDb();
}
}
程序给出了消息
的异常该进程无法访问文件'\ STATUS.txt',因为它正在存在 被另一个过程使用。
如何解决这个问题?
答案 0 :(得分:4)
将您的代码修改为以下内容:
if (File.Exists(filePath))
{
string status;
using(var streamReader = new StreamReader(filePath))
{
status = streamReader.ReadLine();
}
if (status != "SUCCEEDED")
{
File.Delete(filePath);
createDb();
}
}
答案 1 :(得分:1)
使用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构造函数。
答案 2 :(得分:1)
您应该在删除文件之前关闭流 试试这个
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();
}
}
答案 3 :(得分:0)
您需要在删除文件之前关闭该文件,或使用阻止文件将其写入。
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();
}
}