Использование метода: System.IO.File.Create()
После создания файла он все еще остается используемым процессом, и я не могу его удалить.
Любая идея, как я могу лучше создать файл, должен быть 0-байтным файлом, а затем как-то закрыть и распоряжаться?
Использование метода: System.IO.File.Create()
После создания файла он все еще остается используемым процессом, и я не могу его удалить.
Любая идея, как я могу лучше создать файл, должен быть 0-байтным файлом, а затем как-то закрыть и распоряжаться?
ДЛ,
Вы должны поместить свой вызов в. Создайте в инструкции using, чтобы FileStream, что .Create return будет закрыт должным образом. IE:
using (File.Create("path")){...}
Метод Create не только создает файл, он открывает его и возвращает объект FileStream, который вы можете использовать для записи в файл.
Вы должны закрыть файл после себя, иначе он не будет закрыт до того, как сборщик мусора очистит объект FileStream.
Самый простой способ - просто закрыть файл, используя ссылку, возвращаемую методом Create:
File.Create(fileName).Close();
nikmd23 имеет короткий ответ, длинный ответ: FileStream, возвращаемый File.Create(...), не детерминируется, поэтому его дескриптор не закрывается, когда вы пытаетесь его удалить.
Как полагает nikmd23, завершение вашего вызова File.Create(...) будет выполняться с помощью оператора using, убедитесь, что поток закрыт и удален:
using (FileStream fs = File.Create(path)) {
// do anything with the stream if need-be...
}
File.Delete(path); //after it been disposed of.
Блок using(...) на самом деле является только компилятором-сахаром для:
FileStream fs = File.Create(path);
try {
// do anything with the stream if need-be...
}
finally {
fs.Dispose();
}
File.Delete(path)
Вы должны использовать ответ nikmd23 почти во всех случаях. Если вы не можете, потому что вам нужно передать FileStream в другое место, обязательно вызовите метод FileStream.Close. Предпочтительно у вас будет класс, который "владеет" FileStream реализует IDisposable сам и закрывает поток в своем методе Dispose.
Для получения дополнительной информации об использовании IDisposable обратитесь к документация MSDN, Более легкое чтение и более актуальное, Joe Duffy post по теме.
using(FileStream f = File.Create(file_path))
{
// ... do something with file
f.Close();
}
"f.Close();" файл закрытия строки немедленно. Если не закрыть вручную, Disposing может не закрыть его.
См. System.IO.File.Create(String) Метод описание параметра и возвращаемого значения
Параметры
путь Тип:
System.StringПуть и имя создаваемого файла.Возвращаемое значение
Тип:
System.IO.FileStreamA
FileStream, который обеспечивает доступ для чтения/записи к файлу, указанному в пути.
Возвращаемое значение FileStream доступно для доступа IO к созданному файлу. Если вам не интересно писать (или читать) вновь созданный файл, закрыть поток. Это то, что обеспечивает блок using.