Оглавление

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