; cost = dataln.ReadDouble();
// Проверить, совпадает ли он с запрашиваемым предметом.
// Если совпадает, то отобразить сведения о нем.
if(item.Equals(what, StringComparison.OrdinallgnoreCase)) {
Console.WriteLine(item + ': ' + onhand + ' штук в наличии. ' +
'Цена: {0:С} за штуку', cost);
Console.WriteLine('Общая стоимость по наименованию <{0}>: {1:С}.', item, cost * onhand);
break;
}
}
}
catch(EndOfStreamException) {
Console.WriteLine('Предмет не найден.');
catch(IOException exc) {
Console.WriteLine('Ошибка чтения из файла товарных запасов');
Console.WriteLine('Причина: ' + exc.Message);
} finally {
dataln.Close();
} '
}
}
Выполнение этой программы может привести, например, к следующему результату.
Введите наименование для поиска: Отвертки
Отвертки: 18 штук в наличии. Цена: $1.50 за штуку.
Общая стоимость по наименованию <Отвертки>: $27.00.
Обратите внимание на то, что сведения о товарных запасах сохраняются в этой программе в двоичном формате, а не в удобной для чтения текстовой форме. Благодаря этому обработка числовых данных может выполняться без предварительного их преобразования из текстовой формы.
Обратите также внимание на то, как в этой программе обнаруживается конец файла. Методы двоичного ввода генерируют исключение EndOf StreamException по достижении конца потока, и поэтому файл читается до тех пор, пока не будет найден искомый предмет или сгенерировано данное исключение. Таким образом, для обнаружения конца файла никакого специального механизма не требуется.
Файлы с произвольным доступом
В предыдущих примерах использовались
long Seek(long
где
Значение
Описание
SeekOrigin.Begin
Поиск от начала файла
SeekOrigin.Current
Поиск от текущего положения
SeekOrigin.End
Поиск от конца файла
Следующая операция чтения или записи после вызова метода Seek () будет выполняться, начиная с нового положения в файле, возвращаемого этим методом. Если во время поиска в файле возникает ошибка, то генерируется исключение IOException. Если же запрос положения в файле не поддерживается базовым потоком, то генерируется исключение NotSupportedException. Кроме того, могут быть сгенерированы и другие исключения.
В приведенном ниже примере программы демонстрируется ввод-вывод в файл с произвольным доступом. Сначала в файл записываются прописные буквы английского алфавита, а затем его содержимое считывается обратно в произвольном порядке.
// Продемонстрировать произвольный доступ к файлу.
using System; using System.10;
