| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Оглавление

Работа с файлами
Классы потоков
Стандартные потоки
Потоки и файлы
Запись и чтение потоков
Закрывание потоков
Сброс буферов
Потоки в памяти
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);	

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



Java | Продукты и решения | Технологии | Сервис и обучение
О компании | Партнеры | Новости | Поиск
Sun Microsystems Inc. Corporate Information Our partners News and Events Search on site Java Computing Products and Solutions Technologies and Researches Education and Service Content
Используются технологии uCoz

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz