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