Как утилизировать объект, созданный классом FileInfo?

1

Я использую

FileInfo

класса, чтобы получить длину файла следующим образом:

FileInfo infoFile = new FileInfo(@"C:\Text12341234");
long configFileLength = infoFile.Length;

Я хочу избавиться от объекта, созданного

FileInfo 

класс. Я получаю сообщение об ошибке "Файл уже используется другим процессом". Как я могу это сделать?

  • 2
    Как вы распорядились? Я не вижу кода этого.
  • 1
    Эта проблема не вызвана FileInfo ; код, который вы разместили, не создает файл.
Показать ещё 2 комментария
Теги:

3 ответа

5
Лучший ответ

FileInfo не реализует IDisposable, поэтому вы не можете его утилизировать.

Любые результаты других методов, которые вы вызываете в FileInfo которые реализуют IDisposable должны обрабатываться на фактическом объекте, а не на FileInfo.

Вы должны использовать с using:

using (FileStream s = File.Create(Application.StartupPath + @"\Client.config.xml"))
{
    // your code using s
}
1

FileInfo не открывает поток. Если вы использовали такие методы, как OpenRead вам нужно закрыть Stream вы открыли, вызвав метод Close Или просто оберните выражение с using.

  • 2
    предпочтительное использование должно использоваться там, где реализован IDisposable. В случае исключений вам не нужно иметь блок finally, где вы вызываете закрытие.
0

У вашего кода нет проблем с запуском, нет необходимости распоряжаться; Я думаю, что этот фрагмент кода поможет вам:

var f = new FileInfo(@"d:\ntt.txt");
var fs = f.Create();

// you can use dispose here, for it returns filestream
fs.Dispose();
  • 0
    Если это вообще возможно, используйте using шаблона, таким образом, он корректно располагается в случае исключений и облегчает написание читаемого кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню