Оглавление

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

    Работа с файлами и каталогами при помощи класса File

    В предыдущих разделах мы рассмотрели классы, предназначенные для чтения и записи потоков. Однако часто возникает необходимость выполнения и таких операций, как определение атрибутов файла, создание или удаление каталогов, удаление файлов, получение списка всех файлов в каталоге и так далее. Для выполнения всех этих операций в приложениях Java используется класс с именем File.

    Создание объекта класса File

    У вас есть три возможности создать объект класса File, вызвав для этого один из трех конструкторов:

    public File(String path);
    
    public File(File dir, String name);
    
    public File(String path, String name);

    Первый из этих конструкторов имеет единственный параметр - ссылку на строку пути к файлу или каталогу. С помощью второго конструктора вы можете указать отдельно каталог dir и имя файла, для которого создается объект в текущем каталоге. И, наконец, третий конструктор позволяет указать полный путь к каталогу и имя файла.

    Если первому из перечисленных конструкторов передать ссылку со значением null, возникнет исключение NullPointerException.

    Пользоваться конструкторам очень просто. Вот, например, как создать объект класса File для файла c:\autoexec.bat и каталога d:\winnt:

    f1 = new File("c:\\autoexec.bat");
    
    f2 = new File("d:\\winnt");

    Определение атрибутов файлов и каталогов

    После того как вы создали объект класса File, нетрудно определить атрибуты этого объекта, воспользовавшись соответствующими методами класса File.

    Проверка существования файла или каталога

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

    public boolean exists();

    Этот метод можно применять перед созданием потока на базе класса FileOutputStream, если вам нужно избежать случайной перезаписи существующего файла. В этом случае перед созданием выходного потока класса FileOutputStream следует создать объект класса File, указав конструктору путь к файлу, а затем проверить сущестование файла методом exists.

    Проверка возможности чтения и записи

    Методы canRead и canWrite позволяют проверить возможность чтения из файла и записи в файл, соответственно:

    public boolean canRead();
    
    public boolean canWrite();

    Их полезно применять перед созданием соответствующих потоков, если нужно избежать возникновение исключений, связанных с попыткой выполнения доступа неразрешенного типа. Если доступ разрешен, эти методы возвращают значение true, а если запрещен - false.

    Определение типа объекта - файл или каталог

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

    public boolean isDirectory();
    
    public boolean isFile();

    Получение имени файла или каталога

    Метод getName возвращает имя файла или каталога для заданного объекта класса File (имя выделяется из пути):

    public String getName();

    Получение абсолютного пути к каталогу

    Метод getAbsolutePath возвращает абсолютный путь к файлу или каталогу, который может быть машинно-зависимым:

    public String getAbsolutePath();

    Определение типа указанного пути - абсолютный или относительный

    С помощью метода isAbsolute вы можете определить, соответствует ли данный объект класса File файлу или каталогу, заданному абсолютным (полным) путем, либо относительным путем:

    public boolean isAbsolute();

    Определение пути к файлу или каталогу

    Метод getPath позволяет определить машинно-независимый путь файла или каталога:

    public String getPath();

    Определение родительского каталога

    Если вам нужно определить родительский каталог для объекта класса File, то это можно сделать методом getParent:

    public String getParent();

    Определение длины файла в байтах

    Длину файла в байтах можно определить с помощью метода length:

    public long length();

    Определение времени последней модификации файла или каталога

    Для определения времени последней модификации файла или каталога вы можете вызвать метод lastModified:

    public long lastModified();

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

    Получение текстового представления объекта

    Метод toString возвращает текстовую строку, представляющую объект класса File:

    public String toString();

    Получение значения хэш-кода

    Метод hashCode возвращает значение хэш-кода, соответствующего объекту File:

    public int hashCode();

    Удаление файлов и каталогов

    Для удаления ненужного файла или каталога вы должны создать соответствующий объект File и затем вызвать метод delete:

    public boolean delete();

    Создание каталогов

    С помощью методов mkdir и mkdirs можно создавать новые каталоги:

    public boolean mkdir();
    
    public boolean mkdirs();

    Первый из этих методов создает один каталог, второй - все подкаталоги, ведущие к создаваемому каталогу (то есть полный путь).

    Переименование файлов и каталогов

    Для переименования файла или каталога вы должны создать два объекта класса File, один из которых соответствует старому имени, а второй - новому. Затем для перовго из этих объектов нужно вызвать метод renameTo, указав ему в качестве параметра ссылку на второй объект:

    public boolean renameTo(File dest);

    В случае успеха метод возвращает значение true, при возникновении ошибки - false. Может также возникать исключение SecurityException.

    Сравнение объектов класса File

    Для сравнения объектов класса File вы должны использовать метод equals:

    public boolean equals(Object obj);

    Заметим, что этот метод сравнивает пути к файлам и каталогам, но не сами файли или каталоги.

    Получение списка содержимого каталога

    С помощью метода list вы можете получить список содержимого каталога, соответствующего данному объекту класса File. В классе File предусмотрено два варианта этого метода - без параметра и с параметром:

    public String[] list();
    
    public String[] list(FilenameFilter filter);

    Первый из этих методв возвращает массив строк с именами содержимого каталога, не включая текущий каталог и родительский каталог. Второй позволяет получить список не всех объектов, хранящихся в каталоге, а только тех, что удовлетворяют условиям, определенным в фильтре filter класса FilenameFilter.



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