Работа с файлами и каталогами
при помощи класса 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.
|