Ответ 1
ДЛ,
Вы должны поместить свой вызов в. Создайте в инструкции using, чтобы FileStream, что .Create return будет закрыт должным образом. IE:
using (File.Create("path")){...}
Использование метода: 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.FileStream
A
FileStream
, который обеспечивает доступ для чтения/записи к файлу, указанному в пути.
Возвращаемое значение FileStream
доступно для доступа IO к созданному файлу. Если вам не интересно писать (или читать) вновь созданный файл, закрыть поток. Это то, что обеспечивает блок using
.