В этой части
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();
}
}
Используйте шаблон using
:
if (File.Exists(filePath)) {
using(var stream = new StreamReader(File.OpenRead(filePath)))
{
var status = stream.ReadLine();
if (status != "SUCCEEDED")
{
File.Delete(filePath);
createDb();
}
}
}
Затем, если somene else использует файл, вы можете открыть поток, как показано ниже:
new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))
ant, а затем перейти к конструктору StreamReader.
File.OpenRead
. Вы можете использовать этот ctor: msdn.microsoft.com/de-de/library/vstudio/f2ke0fzy
вы должны закрыть поток перед удалением файла. Попробуйте это.
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();
}
}
Перед удалением необходимо закрыть файл или записать его в блок.
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();
}
}
status
является строкой. Вы не можете закрыть строку.