Ответ 1
File.Create
возвращает a FileStream
. Вы должны использовать его следующим образом:
using (FileStream fs = File.Create(path))
{
//you can use the filstream here to put stuff in the file if you want to
}
Я использую System.IO.File.Create для создания файла. Я не пишу с ним потоковым писателем, просто создавая его.
Я получаю ошибку сервера в интерфейсе, когда приложение пытается открыть вновь созданный файл - этот файл используется. Похоже, что сбор мусора идет, и через несколько минут все в порядке.
Теперь я знаю, что если бы я использовал Streamwriter, мне пришлось бы его закрыть. То же самое относится к созданию?
Я читал, что открытие сценария потока в файл, а затем его закрытие будет исправлено, но это кажется беспорядочным. Есть ли более простой способ?
File.Create
возвращает a FileStream
. Вы должны использовать его следующим образом:
using (FileStream fs = File.Create(path))
{
//you can use the filstream here to put stuff in the file if you want to
}
Попробуйте следующее:
System.IO.File.Create(FullFName).Close();
Создание файла открывает для него FileStream
, следовательно, его блокировку (File.Create
возвращает FileStream
).
Вы должны закрыть этот поток, чтобы получить доступ к файлу. Это лучше всего сделать с помощью инструкции using
:
using(FileStream fs = File.Create(path))
{
}
При использовании File.Create
вы получите возвращаемый FileStream
. Пока вы не закрываете поток или пока объект FileStream
не будет удален (сборщиком сборщика мусора), он останется открытым и заблокирован.
FileStream
реализует IDisposable
, чтобы вы могли сделать следующее:
using(FileStream fs = File.Create(filename))
{
// Do stuff like write to the file
}
Оператор using
представляет собой "синтаксический сахар" и заставляет компилятор генерировать код, функционально эквивалентный:
FileStream fs = File.Create(filename)
try
{
// Do stuff like write to the file
}
finally
{
fs.Dispose();
}
Метод Dispose
вызывает Close
внутренне.
Метод Create
вернет дескриптор файла. Перед повторным использованием файла дескриптор файла должен быть закрыт. Подробнее см. В статье MSDN File.Create Method (String).
Резюме:
Объект FileStream, созданный этим методом, имеет значение FileShare по умолчанию None; ни один другой процесс или код не могут получить доступ к созданному файлу до тех пор, пока дескриптор исходного файла не будет закрыт.
Я использовал:
System.IO.File.Create(sFullFileName);
Вышеупомянутый метод .Create
не закрывал файл
Теперь я использую:
System.IO.File.WriteAllText(sFullFileName, "Uploading");
Этот метод создает и закрывает файл (обратите внимание: я поместил строку "Uploading" в файл, но я уверен, что string.Empty
также будет работать.