Новые книги

У современного интернет-пользователя нет времени. Если, зайдя на вашу страницу, он не сможет за минуту понять, что же вы предлагаете, он уйдет и больше никогда не вернется. Что делать?

Эрин Киссейн подробно рассказывает о том, как создавать правильный контент. В ее книге вы найдете ответы на основные вопросы современного владельца любого интернет-ресурса: как понять, какой контент будет интересен целевой аудитории, каким требованиям он должен удовлетворять, чтобы привлечь посетителей и превратить их в покупателей, как разработать контент-стратегию и придерживаться ее. Она поможет вам освоить необходимые навыки и избежать наиболее распространенных ошибок при разработке наполнения вашего сайта.
Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS. Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы. B четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64. Книга состоит из 14 глав, словаря терминов и предметного указателя. Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.

Названия всех команд, диалоговых окон и других интерфейсных элементов операционной системы приведены как на английском языке, так и на русском.

Версия Fb2 редакции —

. Об ошибках просьба сообщать по адресу — [email protected].

1.5

Произвольный доступ к файлам

Произвольный доступ к файлам

Оглавление

Работа с файлами
Классы потоков
Стандартные потоки
Потоки и файлы
Запись и чтение потоков
Закрывание потоков
Сброс буферов
Потоки в памяти
Stream Tokenizer
String Tokenizer
Класс File
Произвольный доступ
Приложение StreamToken
Приложение DirectFile

В ряде случаев, например, при создании системы управления базой данных, требуется обеспечить произвольный доступ к файлу. Рассмотренные нами ранее потоки ввода и вывода пригодны лишь для последовательного доступа, так как в соответствующих классах нет средств позиционирования внутри файла.

Между тем библиотека классов 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();

Ряд методов предназначен для выполнения как обычного, так и форматированного ввода из файла. Этот набор аналогичен методам, определенным для потоков:

public int read();
public int read(byte b[]);
public int read(byte b[],int off,int len);
public final boolean readBoolean();
public final byte    readByte();
public final char    readChar();
public final double  readDouble();
public final float   readFloat();
public final void    readFully(byte b[]);
public final void    readFully(byte b[],
   int off, int len); 
public final int     readInt();
public final String  readLine();
public final long    readLong();
public final short   readShort();
public final int     readUnsignedBytee();
public final int     readUnsignedShort();
public final String  readUTF();

Существуют также методы, позволяющие выполнять обычную или форматированную запись в файл с прямым доступом:

public void write(byte b[]);
public void write(byte b[],int off,int len);
public void write(int b); 
public final void writeBoolean(boolean v); 
public final void writeBytee(int v); 
public final void writeBytes(String s); 
public final void writeChar(int v); 
public final void writeChars(String s); 
public final void writeDouble(double v); 
public final void writeFloat(float v); 
public final void writeInt(int v); 
public final void writeLong(long v); 
public final void writeShort(int v); 
public final void writeUTF(String str);	

Имена приведенных методов говорят сами за себя, поэтому мы не будем их описывать.