System.IO.File.Create блокировка файла

Я использую System.IO.File.Create для создания файла. Я не пишу с ним streamовым писателем, просто создавая его.

Я получаю ошибку сервера в интерфейсе, когда приложение пытается открыть вновь созданный файл – этот файл используется. Кажется, что garbage collection идет, и через несколько минут все в порядке.

Теперь я знаю, что если бы я использовал Streamwriter, мне пришлось бы его закрыть. То же самое относится к созданию?

Я прочитал, что открытие сценария streamа в файл, а затем его закрытие будет исправлено, но это кажется грязным. Есть ли более простой способ?

File.Create возвращает 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 ).

Вы должны закрыть этот stream, чтобы получить доступ к файлу. Это лучше всего сделать с using оператора:

 using(FileStream fs = File.Create(path)) { } 

При использовании File.Create вы возвращаете FileStream . Пока вы не закроете stream или пока объект 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 также будет работать.

  • Многостраничные формы от клиента C #
  • Хостинг внешнего приложения в окне WPF
  • Скопируйте cv :: Mat внутри ROI другого
  • .NET. Получите все элементы календаря Outlook.
  • Каков правильный способ создания приложения с одним экземпляром?
  • В чем разница между vmalloc и kmalloc?
  • Чтение ввода файла из POST-файла с несколькими данными / формами данных
  • Почему объекты одного classа имеют доступ к личным данным друг друга?
  • Недопустимая длина для массива символов Base-64
  • Эффективное умножение векторных матриц 4x4 на SSE: горизонтальное добавление и точечный продукт - в чем смысл?
  • Как я могу запретить пользователю закрывать мое приложение C #?
  • Давайте будем гением компьютера.