Какое исключение выбрано в .NET Framework при попытке записать файл, но диск заполнен?Вызывается ли исключение IO, если диск заполнен?
Записывает ли файл буфера Windows?
Какое исключение выбрано в .NET Framework при попытке записать файл, но диск заполнен?Вызывается ли исключение IO, если диск заполнен?
Записывает ли файл буфера Windows?
вы получите исключение ввода-вывода:
System.IO.IOException: There is not enough space on the disk.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
System.IO
библиотека обрабатывает актуальные задачи чтения и записи на диск и оборачивает их в управляемом коде, так что вы не должны получить никаких неуправляемых исключений с помощью их.
Это также стоит попробовать (с одним из этих дрянных маленьких USB-накопителей, которые они выдают повсюду), чтобы узнать, что происходит с вашим кодом - это, как правило, лучший способ узнать об этом.
Я также хотел бы узнать ответ точно, КОГДА исключение будет вызвано –
Когда диск заполнен? – tster
Исключение будет выбрано при попытке выполнить операцию записи (или открыть файл для записи, я думаю) на полном диске. Операции чтения на полном диске не будут генерировать исключение. – Keith
Вы можете проверить Win 32 Exception после того, что у вас есть не в состоянии увидеть, если это дает более подробную информацию:
Win32Exception ex = new Win32Exception();
string low_level_error = ex.Message;
Как вы пишете на диск? Для FileStream он говорит:
«Обязательно вызовите метод Dispose на все объекты FileStream, особенно в средах с ограниченным пространством на диске Выполнение операций ввода-вывода может поднять исключение, если нет места на диске . доступно, а метод Dispose - , который не вызывается до того, как FileStream завершил . "
Почему бы вам не попробовать и не видеть - подключите USB-накопитель и продолжайте писать мусор, пока не закончите пространство и не увидите, что произойдет. Я подозреваю, что вы получите управляемое «IOException» в записи, которое перенесет его за лимит, поскольку процесс буферизации должен быть непрозрачным для управляемого кода. – Keith
еще лучше, дискета! –
C# - язык программирования - он ничего не делает из-за полной файловой системы. Вы имеете в виду «Исключение исключения IO в .NET get throw ...» –