Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface JavaFileManager extends Closeable, Flushable, OptionChecker
Создавая новый JavaFileObjects, файловый менеджер должен определить, где создать их. Например, если бы файловый менеджер управляет регулярными файлами на файловой системе, у него наиболее вероятно был бы текущий/рабочий каталог, чтобы использовать в качестве расположения по умолчанию, создавая или находя файлы. Много подсказок могут быть обеспечены для файлового менеджера как, туда, где создать файлы. Любой файловый менеджер мог бы хотеть игнорировать эти подсказки.
Некоторые методы в этом интерфейсном использовании имена классов. Такие имена классов должны быть даны в виртуальной машине Java внутреннюю форму полностью определенного класса и интерфейсных имен. Для удобства '.' и '/' являются взаимозаменяемыми. Внутренняя форма определяется в главе четыре из Спецификации Виртуальной машины Java™.
Обсуждение: это означает, что имена "java/lang.package-info", "java/lang/package-info", "java.lang.package-информация", допустимы и эквивалентны. Сравнитесь с двоичным именем как определено в Спецификации языка Java™, разделите 13.1" Форма Двоичного файла".
Случай имен является существенным. Все имена должны быть обработаны как чувствительные к регистру. Например, у некоторых файловых систем есть нечувствительные к регистру, осведомленные о случае имена файлов. Объекты файла, представляющие такие файлы, должны заботиться, чтобы сохранить случай при использовании File.getCanonicalFile()
или подобные средства. Если система не осведомлена о случае, объекты файла должны использовать другие средства сохранить случай.
Относительные имена: некоторые методы в этом интерфейсном родственнике использования имена. Относительное имя является ненулем, непустой последовательностью сегментов пути, разделенных '/' '.' или '..' недопустимые сегменты пути. Допустимое относительное имя должно соответствовать "беспочвенное путем" правило
URI.create(relativeName).normalize().getPath().equals(relativeName)
Все методы в этом интерфейсе могли бы бросить SecurityException.
Объект этого интерфейса не обязан поддерживать многопоточный доступ, то есть, синхронизироваться. Однако, это должно поддерживать параллельный доступ к различным объектам файла, создаваемым этим объектом.
Примечание реализации: последствие этого требования - то, что тривиальная реализация вывода к JarOutputStream не является достаточной реализацией. Таким образом, вместо того, чтобы создавать JavaFileObject, который возвращает JarOutputStream непосредственно, содержание должно кэшироваться пока не закрыто и затем записано JarOutputStream.
Если явно не позволено, все методы в этом интерфейсе могли бы бросить NullPointerException если дано a null
параметр.
JavaFileObject
, FileObject
Модификатор и Тип | Интерфейс и Описание |
---|---|
static interface |
JavaFileManager. Расположение
Интерфейс для расположений объектов файла.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
close()
Высвобождает любые средства, открытые этим файловым менеджером прямо или косвенно.
|
void |
flush()
Сбросы любые ресурсы, открытые для вывода этим файловым менеджером прямо или косвенно.
|
ClassLoder |
getClassLoader(JavaFileManager.Location location)
Получает загрузчик класса для того, чтобы он загрузил плагины из данного расположения.
|
FileObject |
getFileForInput(JavaFileManager.Location location, String packageName, String relativeName)
Получает объект файла для ввода, представляющего указанное относительное имя в указанном пакете в данном расположении.
|
FileObject |
getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling)
Получает объект файла для вывода, представляющего указанное относительное имя в указанном пакете в данном расположении.
|
JavaFileObject |
getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind)
Получает объект файла для ввода, представляющего указанный класс указанного вида в данном расположении.
|
JavaFileObject |
getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling)
Получает объект файла для вывода, представляющего указанный класс указанного вида в данном расположении.
|
boolean |
handleOption(String current, Iterator<String> remaining)
Дескрипторы одна опция.
|
boolean |
hasLocation(JavaFileManager.Location location)
Определяет, известно ли расположение этому файловому менеджеру.
|
Строка |
inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
Выводит двоичное имя файла, основанного на объектах на расположении.
|
boolean |
isSameFile(FileObject a, FileObject b)
Сравнивает два объекта файла, и возвратите true, если они представляют тот же самый базовый объект.
|
Iterable<JavaFileObject> |
list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse)
Списки все объекты файла, соответствующие данные критерии в данном расположении.
|
isSupportedOption
ClassLoader getClassLoader(JavaFileManager.Location location)
ANNOTATION_PROCESSOR_PATH
расположение.location
- расположениеnull
если загрузка плагинов от данного расположения отключается или если расположение не известноSecurityException
- если загрузчик класса не может быть создан в текущем контексте защитыIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытIterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
Отметьте: даже если данное расположение неизвестно этому файловому менеджеру, оно, возможно, не возвращается null
. Кроме того, неизвестное расположение, возможно, не вызывает исключение.
location
- расположениеpackageName
- имя пакетаkinds
- возвратите объекты только этих видовrecurse
- если истина включает "подпакеты"IOException
- если ошибка ввода-вывода произошла, или если close()
был вызван и этот файловый менеджер не может быть вновь открытIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытString inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
location
- расположениеfile
- объект файлаnull
объект файла не находится в данном расположенииIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытboolean isSameFile(FileObject a, FileObject b)
a
- объект файлаb
- объект файлаIllegalArgumentException
- если любой из параметров создавался с другим файловым менеджером, и этот файловый менеджер не поддерживает внешние объекты файлаboolean handleOption(String current, Iterator<String> remaining)
current
опция к этому файловому менеджеру, от которого она использует любые параметры той опции remaining
и возвратите true, иначе возвратите false.current
- текущая опцияremaining
- оставление опциямиIllegalArgumentException
- если эта опция к этому файловому менеджеру используется неправильноIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытboolean hasLocation(JavaFileManager.Location location)
location
- расположениеJavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException
location
- расположениеclassName
- имя классаkind
- вид файла, должен быть один из SOURCE
или CLASS
null
если файл не существуетIllegalArgumentException
- если расположение не известно этому файловому менеджеру, и файловый менеджер не поддерживает неизвестные расположения, или если вид не допустимIOException
- если ошибка ввода-вывода произошла, или если close()
был вызван и этот файловый менеджер не может быть вновь открытIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытJavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
Дополнительно, этот файловый менеджер мог бы рассмотреть одноуровневый элемент как подсказку для того, куда поместить вывод. Точная семантика этой подсказки является неуказанной. Компилятор JDK, javac, например, поместит файлы класса в те же самые каталоги как порождающий исходные файлы, если выходной каталог файла класса не будет обеспечен. Чтобы облегчить это поведение, javac мог бы обеспечить инициирующий исходный файл как одноуровневый элемент, вызывая этот метод.
location
- расположениеclassName
- имя классаkind
- вид файла, должен быть один из SOURCE
или CLASS
sibling
- объект файла, который будет использоваться в качестве подсказки для размещения; мог бы быть null
IllegalArgumentException
- если одноуровневый элемент не известен этому файловому менеджеру, или если расположение не известно этому файловому менеджеру, и файловый менеджер не поддерживает неизвестные расположения, или если вид не допустимIOException
- если ошибка ввода-вывода произошла, или если close()
был вызван и этот файловый менеджер не может быть вновь открытIllegalStateException
- close()
вызвали, и этот файловый менеджер не может быть вновь открытFileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException
Если возвращенный объект представляет источник или файл класса, это должен быть экземпляр JavaFileObject
.
Неофициально, объект файла, возвращенный этим методом, располагается в связи расположения, имени пакета, и относительного имени. Например, чтобы определить местоположение файла свойств "resources/compiler.properties" в пакете "com.sun.tools.javac" в расположении SOURCE_PATH, как этот метод можно было бы вызвать так:
getFileForInput(SOURCE_PATH, "com.sun.tools.javac", "resources/compiler.properties");
Если вызов выполнялся на Windows с набором SOURCE_PATH к "C:\Documents and Settings\UncleBob\src\share\classes"
, допустимым результатом был бы объект файла представление файла "C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties"
.
location
- расположениеpackageName
- имя пакетаrelativeName
- относительное имяnull
если файл не существуетIllegalArgumentException
- если расположение не известно этому файловому менеджеру, и файловый менеджер не поддерживает неизвестные расположения, или если relativeName
не допустимоIOException
- если ошибка ввода-вывода произошла, или если close()
был вызван и этот файловый менеджер не может быть вновь открытIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытFileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
Дополнительно, этот файловый менеджер мог бы рассмотреть одноуровневый элемент как подсказку для того, куда поместить вывод. Точная семантика этой подсказки является неуказанной. Компилятор JDK, javac, например, поместит файлы класса в те же самые каталоги как порождающий исходные файлы, если выходной каталог файла класса не будет обеспечен. Чтобы облегчить это поведение, javac мог бы обеспечить инициирующий исходный файл как одноуровневый элемент, вызывая этот метод.
Если возвращенный объект представляет источник или файл класса, это должен быть экземпляр JavaFileObject
.
Неофициально, объект файла, возвращенный этим методом, располагается в связи расположения, имени пакета, и относительного имени или рядом с одноуровневым параметром. См. getFileForInput
для примера.
location
- расположениеpackageName
- имя пакетаrelativeName
- относительное имяsibling
- объект файла, который будет использоваться в качестве подсказки для размещения; мог бы быть null
IllegalArgumentException
- если одноуровневый элемент не известен этому файловому менеджеру, или если расположение не известно этому файловому менеджеру, и файловый менеджер не поддерживает неизвестные расположения, или если relativeName
не допустимоIOException
- если ошибка ввода-вывода произошла, или если close()
был вызван и этот файловый менеджер не может быть вновь открытIllegalStateException
- если close()
был вызван и этот файловый менеджер не может быть вновь открытvoid flush() throws IOException
flush
в интерфейсе Flushable
IOException
- если ошибка ввода-вывода произошлаclose()
void close() throws IOException
close
в интерфейсе AutoCloseable
close
в интерфейсе Closeable
IOException
- если ошибка ввода-вывода произошлаflush()
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.