К. Арнольд, Д. Гослинг - Язык программирования Java (1160779), страница 47
Текст из файла (страница 47)
Если параметр равен 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() = FileMethodsgetPath() = ok/FileMethodsgetAbsolutePath() = /vob/java_prog/src/ok/FileMethodsgetParent() = 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Напишите метод, который получает в качестве параметра полное имя файла и выводит всю информацию о соответствующем файле (если онсуществует).11.19. Интерфейс FilenameFilterИнтерфейс FilenameFilter позволяет создавать объекты, которые фильтруют списки файлов и удаляют из них ненужные. Он содержит всего одинметод:boolean accept(File dir, String name)Возвращает true, если файл с именем name в каталоге dir должен входить в отфильтрованный список.В следующем примере объект FilenameFilter используется для того, чтобы в список включались только каталоги:import java.io.*;class DirFilter implements FilenameFilter {public boolean accept(File dir, String name) {return new File(dir, name).isDirectory();}}public static void main(String[] args) {File dir = new File(args[0]);String[] files = dir.list(new DirFilter());System.out.println(files.length + "dir(s):");for (int i = 0; i << files.length; i++)System.out.println("\t" + files[i]);}Сначала мы создаем объект File, который представляет собой каталог, указанный в командной строке.
Затем мы конструируем объект DirFilter ипередаем его в качестве параметра методу list. Для каждого имени, входящего в каталог, list вызывает метод accept объекта-фильтра и включаетимя в список лишь в том случае, если объект-фильтр возвращает true. Для нашего метода accept значение true показывает, что имя соответствуеткаталогу.Упражнение 11.10С помощью интерфейса FilenameFilter напишите программу, которая получает в качестве параметров имя каталога и расширение файла ивыводит список всех файлов каталога с заданным расширением.11.20. Классы IOExceptionДля сообщений обо всех ошибках ввода/вывода, обнаруженных классами пакета java.io, должны использоваться исключения, являющиесяподклассом IOException.
Большинство классов проектировалось для целей общего назначения, так что основная часть исключений также носитуниверсальный характер. Например, методы класса InputStream, возбуждающие IOException, не могут заранее предсказать, какие именновозникнут исключения, так как каждый конкретный потоковый класс может возбудить некоторый подкласс IOException, сигнализируя тем самымоб ошибке, относящейся лишь к этому потоку. Например, фильтрующие входные и выходные потоки лишь передают без обработки исключенияот объектов, на основе которых они создавались и которые могут представлять собой потоки любого типа.В пакете java.io используются четыре подкласса IOException:EOFException extends IOExceptionВозбуждается интерфейсами потоков данных при достижении конца ввода, как запланированном, так и неожиданном.FileNotFoundException extends IOExceptionВозбуждается конструкторами файловых потоков, если файл, имя которого передается в качестве параметра, не найден.InterruptedIOException extends IOExceptionВозбуждается любым потоком, когда в операцию ввода/вывода вмешивается прерывание программного потока (см.
раздел “Прерываниепотока”). Фактически операции ввода/вывода переводят исключение InterruptedException в InterruptedIO Exception.UTFDataFormatException extends IOExceptionВозбуждается методом DataInputStream.readUTF, если считываемая строка имеет неверный синтаксис UTF.Если не считать этих конкретных исключений, то для сообщений обо всех особых состояниях в java.io используется исключение IOException,содержащее строку с описанием конкретной ошибки — например, использование несоединенного конвейерного потока или попытка отката нанесколько символов назад в потоке PushbackInputStream.Содержание | Далее© 1997-2002 Издательский дом "Питер". Авторские права охраняются.Предназначено только для частного использования!Воспроизведение материалов или частей данной книги в любом виде без письменного разрешения Издательского дома "Питер" запрещено!Глава 12СТАНДАРТНЫЕ ВСПОМОГАТЕЛЬНЫЕ СРЕДСТВАКомпьютеры бесполезны —они могут только давать ответы.Пабло ПикассоПакет java.util содержит ряд стандартных вспомогательных интерфейсов и классов.