- •2. Перегрузка функций.
- •4. Использование операторов new и delete.
- •5. Понятие классов и экземпляров классов.
- •6. Описание классов(class, struct).
- •7. Вложенные классы.
- •8. Определение объектов при помощи классов.
- •9. Конструкторы и деструкторы классов.
- •10. Атрибуты доступа к компонентам классов.
- •11. Объявление и определение методов класса.
- •12. Вызов членов класса.
- •13. Перегрузка конструкторов.
- •14. Перегрузка операторов отношения.
- •15. Перегрузка логических операторов.
- •16. Перегрузка унарных операторов.
- •17. Перегрузка бинарных операторов.
- •18. Функция оператор как член класса.
- •19. Доступ к компонентам классов в зависимости от атрибутов доступа.
- •20. Введение в наследование. Базовые классы.
- •21. Производные классы.
- •22. Ограничение доступа к элементам класса.
- •23. Конструкторы базовых и производных классов.
- •24. Виртуальные базовые классы. Чисто виртуальные функции.
- •25. Использование указателей на базовые классы и производные классы. Виртуальные методы.
- •26. Потоки ввода-вывода. Понятие потока.
- •27. Иерархия классов ввода-вывода. Основные уровни иерархии. Классы потоков.
- •28. Стандартные классы, объекты и механизмы консольного ввода/вывода.
- •29. Стандартные классы, объекты и механизмы файлового ввода/вывода.
- •30. Файлы последовательного доступа и произвольного доступа.
- •31. Основы обработки исключений в с#. Генерация исключений.
- •32. Файлы последовательного доступа и произвольного доступа.
- •34. Основы обработки исключений в с#. Генерация исключений.
32. Файлы последовательного доступа и произвольного доступа.
Произвольного доступа
В ряде случаев, например, при создании системы управления базой данных, требуется обеспечить произвольный доступ к файлу. Рассмотренные нами ранее потоки ввода и вывода пригодны лишь для последовательного доступа, так как в соответствующих классах нет средств позиционирования внутри файла.
Между тем библиотека классов Java содержит класс RandomAccessFile, который предназначен специально для организации прямого доступа к файлам как для чтения, так и для записи.
В классе RandomAccessFile определено два конструктора, прототипы которых показаны ниже:
public RandomAccessFile( String name, String mode); public RandomAccessFile( File file, String mode);
Первый из них позволяет указывать имя файла, и режим mode, в котором открывается файл. Второй конструктор вместо имени предполагает использование объекта класса File.
Если файл открывается только для чтения, вы должны передать конструктору текстовую строку режима "r". Если же файл открывается и для чтения, и для записи, конструктору передается строка "rw".
Позиционирование внутри файла обеспечивается методом seek, в качестве параметра pos которому передается абсолютное смещение файла:
public void seek(long pos);
После вызова этого метода текущая позиция в файле устанавливается в соответствии со значением параметра pos.
В любой момент времени вы можете определить текущую позицию внутри файла, вызвав метод getFilePointer:
public long getFilePointer();
Еще один метод, который имеет отношение к позиционированию, называется skipBytes:
public int skipBytes(int n);
Он работает так же, как и одноименный метод для потоков - продвигает текущую позицию в файле на заданное количество байт.
С помощью метода close вы должны закрывать файл, после того как работа с им завершена:
public void close();
Метод getFD позволяет получить дескриптор файла:
public final FileDescriptor getFD();
С помощью метода length вы можете определить текущую длину файла:
public long length();
Ряд методов предназначен для выполнения как обычного, так и форматированного ввода из файла.
33. Идентификаторы и их использование.
Идентификаторы — это имена, которые присваиваются переменным, пользовательским типам данных, таким как классы и структуры, а также членам этих типов. Идентификаторы зависят от регистра, поэтому, например, переменные interestRate и InterestRate будут трактоваться как различные. Ниже приведен набор правил, регламентирующих, какие идентификаторы можно использовать в С#:
- идентификаторы должны начинаться с буквы или знака подчеркивания, хотя могут в себе содержать цифры;
- не разрешается использовать в качестве идентификаторов ключевые слова С#.
Если вам все-таки нужно использовать одно из этих слов в качестве идентификатора (например, для доступа к классу, написанному на другом языке), вы можете снабдить этот идентификатор префиксом — символом @, который укажет компилятору, что следующее за ним слово — это идентификатор, а не ключевое слово С# (поэтому abstract — недопустимый идентификатор, а @abstract — допустимый).
И, наконец, идентификаторы могут содержать символы Unicode, специфицированные с применением синтаксиса \uXXXX, где ХХХХ — четырехзначный шестнадцатеричный код символа Unicode. Ниже приведены примеры корректных идентификаторов:- Name - uberflufi) - Identifier - \u005fIdentifier
Последние два элемента в этом списке идентичны и взаимозаменяемы (поскольку 005f — это Unicode-код символа подчеркивания), поэтому очевидно, что оба эти идентификаторы не могут быть объявлены вместе в одном и том же контексте. Отметим, что хотя синтаксически разрешается использовать символ подчеркивания в идентификаторах, в большинстве ситуаций это не рекомендуется, поскольку не соответствует рекомендациям по именованию переменных, составленных Microsoft с целью обеспечения соглашений, которых должны придерживаться разработчики, дабы облегчить чтение кода друг для друга.
