Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GoslingJava2.doc
Скачиваний:
139
Добавлен:
23.02.2016
Размер:
2.39 Mб
Скачать

11.18. Класс File

Класс File содержит стандартные средства для работы с именами файлов. Его методы позволяют разделять полные имена, включающие путь, на составные части и запрашивать у файловой системы информацию о файлах.

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

Полное имя /В этом разделе следует отличать полное имя файла от имени объекта класса файл. - Примеч. перев./ делится на две части: одна определяет каталог (или папку), а другая — собственно файл. Для разделения компонентов пути служит символ, хранящийся как значение типа char в статическом поле separatorChar или значение типа String в статическом поле separator. Последнее вхождение этого символа в путь отделяет каталог от имени файла.

Объекты File создаются одним из трех конструкторов:

public File(String path)

Создает объект File для работы с заданным файлом path. Если параметр равен null, возбуждается исключение NullPointerException.

public File(String dirName, String name)

Создает объект File для работы с файлом name, находящимся в каталоге dirName. Если параметр dirName равен null, используется только компонент name. В противном случае вызов конструктора эквивалентен следующему:

File(dirname + File.separator + name)

public File(File fileDir, String name)

Создает объект File для заданного объекта-каталога fileDir типа File и файла с именем name. Вызов конструктора эквивалентен следующему:

File(fileDir.getPath(), name)

Четыре метода get предназначены для получения информации о компонентах полного имени объекта File. В приведенном ниже фрагменте программы вызывается каждый из этих методов:

File src = new File("ok", "FileMethods");

System.out.println("getName() = " + src.getName());

System.out.println("getPath() = " + src.getPath());

System.out.println("getAbsolutePath() = "

+ src.getAbsolutePath());

System.out.println("getParent() = " + src.getParent());

Вот как выглядит результат работы программы:

getName() = FileMethods

getPath() = ok/FileMethods

getAbsolutePath() = /vob/java_prog/src/ok/FileMethods

getParent() = ok

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

  • exists: возвращает true, если файл существует в файловой системе.

  • canRead: возвращает true, если файл существует и доступен для чтения.

  • canWrite: возвращает true, если файл существует и доступен для записи.

  • isFile: возвращает true, если файл существует и является обычным (то есть не каталогом или файлом особого типа).

  • isDirectory: возвращает true, если файл является каталогом.

  • isAbsolute: возвращает true, если путь представляет собой полное имя файла.

Класс File содержит и другие полезные методы:

public long lastModified()

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

public long length()

Возвращает длину файла в байтах.

public boolean mkdir()

Создает каталог и возвращает true в случае успеха.

public boolean mkdirs()

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

public boolean renameTo(File new_name)

Переименовывает файл и возвращает true в случае успеха.

public boolean delete()

Удаляет файл или каталог, представленный объектом File, и возвращает true в случае успеха.

public String[] list()

Возвращает список файлов в каталоге. Если объект File представляет собой не каталог, а нечто иное, передается null; в противном случае возвращается массив с именами файлов. Список содержит все файлы каталога, за исключением эквивалентов “.” и “..” (текущий и родительский каталоги соответственно).

public String[] list(FilenameFilter filter)

Использует заданный фильтр для составления списка файлов в каталоге (см. ниже раздел “Интерфес Filename Filter”).

Переопределенный метод File.equals заслуживает особого упоминания. Два объекта File считаются равными в том случае, если совпадают их полные имена, а не в том, если они представляют один и тот же файл в системе. Метод File.equals не может применяться для выяснения того, соответствуют ли два объекта File одному и тому же файлу.

Для создания файлов используются объекты классов FileOutputStream или RandomAccessFile, а не объекты класса File.

Наконец, остается упомянуть, что символ File.pathSeparatorChar и строка File.pathSeparator представляют символ, разделяющий каталоги или файлы в полном имени. Например, в системе UNIX для разделения компонентов полного имени используется двоеточие: “.:/bin:/usr/bin”. Следовательно, в системе UNIX символ pathSepar a torChar представляет собой двоеточие.

Полное имя файла хранится в защищенном строковом поле с именем String. Подклассы File могут при необходимости непосредственно обращаться к этому полю или модифицировать его.

Упражнение 11.9

Напишите метод, который получает в качестве параметра полное имя файла и выводит всю информацию о соответствующем файле (если он существует).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]