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

Класс File

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

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

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

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

  1. public File(String path)

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

  1. public File(String dirName, String name)

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

File(dirname + File.separator + name)

  1. 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 могут при необходимости непосредственно обращаться к этому полю или модифи­цировать его.

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