Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface Filer
close
к методу обратились Writer
или OutputStream
используемый, чтобы записать содержание файла. Отличают три вида файлов: исходные файлы, файлы класса, и вспомогательные файлы ресурсов. Есть два выдающихся поддерживаемых расположения (поддеревья в пределах логической файловой системы), куда недавно создаваемые файлы помещаются: один для новых исходных файлов, и один для новых файлов класса. (Они могли бы быть определены на командной строке инструмента, например, используя флаги такой как -s
и -d
.) Фактические расположения для новых исходных файлов и новых файлов класса могут или, возможно, не отличны на определенном выполнении инструмента. Файлы ресурсов могут быть созданы в любом расположении. Методы для чтения и записи ресурсов берут относительный параметр имени. Относительное имя является ненулем, непустой последовательностью сегментов пути, разделенных '/'
; '.'
и '..'
недопустимые сегменты пути. Допустимое относительное имя должно соответствовать "беспочвенное путем" правило
Методы создания файла берут переменное число параметров, чтобы позволить инициирующим элементам быть обеспеченными как подсказки для инфраструктуры инструмента, чтобы лучше управлять зависимостями. Инициирующие элементы являются типами или пакетами (представление package-info
файлы), который заставил процессор аннотации пытаться создать новый файл. Например, если процессор аннотации пытается создать исходный файл, GeneratedFromUserSource
, в ответ на обработку
элемент типа для@Generate public class UserSource {}
UserSource
должен быть передан как часть вызова метода создания как в: Если нет никаких инициирующих элементов, ни один нельзя передать. Эта информация может использоваться в инкрементной среде, чтобы определить потребность запустить повторно процессоры или удалить сгенерированные файлы. Неинкрементные среды могут проигнорировать инициирующую информацию об элементе.filer.createSourceFile("GeneratedFromUserSource", eltUtils.getTypeElement("UserSource"));
Во время каждого выполнения инструмента обработки аннотации файл с данным путем может быть создан только однажды. Если тот файл уже будет существовать то перед первой попыткой создать его, будет удалено старое содержание. Любая последующая попытка создать тот же самый файл во время выполнения бросит a FilerException
, как будет, пытаясь создать и файл класса и исходный файл для того же самого имени типа или того же самого имени пакета. Начальные вводы к инструменту, как полагают, создаются нулевым раундом; поэтому, попытка создать источник или файл класса, соответствующий одному из тех вводов, приведет к a FilerException
.
Вообще, процессоры не должны сознательно попытаться перезаписать существующие файлы, которые не были сгенерированы некоторым процессором. A Filer
может отклонить попытки открыть файл, соответствующий существующему типу, как java.lang.Object
. Аналогично, invoker инструмента обработки аннотации не должен сознательно сконфигурировать инструмент так, что, обнаруженные процессоры попытаются перезаписать существующие файлы, которые не были сгенерированы.
Процессоры могут указать на источник, или файл класса сгенерирован включением @Generated
аннотация.
Отметьте, что часть эффекта перезаписи файла может быть достигнута при использовании образца стиля декоратора. Вместо того, чтобы изменить класс непосредственно, разрабатывается класс так, чтобы или его суперкласс был сгенерирован обработкой аннотации или подклассами класса, сгенерированы обработкой аннотации. Если подклассы сгенерированы, родительский класс может быть разработан, чтобы использовать фабрики вместо общедоступных конструкторов так, чтобы только экземпляры подкласса были бы представлены клиентам родительского класса.
Модификатор и Тип | Метод и Описание |
---|---|
JavaFileObject |
createClassFile(CharSequence name, Element... originatingElements)
Создает новый файл класса, и возвращает объект позволить писать в это.
|
FileObject |
createResource(JavaFileManager.Location location, CharSequence pkg, CharSequence relativeName, Element... originatingElements)
Создает новый вспомогательный файл ресурсов для записи и возвращает объект файла для этого.
|
JavaFileObject |
createSourceFile(CharSequence name, Element... originatingElements)
Создает новый исходный файл и возвращает объект позволить писать в это.
|
FileObject |
getResource(JavaFileManager.Location location, CharSequence pkg, CharSequence relativeName)
Возвращает объект для того, чтобы считать существующий ресурс.
|
JavaFileObject createSourceFile(CharSequence name, Element... originatingElements) throws IOException
name
будьте именем пакета, сопровождаемым ".package-info"
; чтобы создать исходный файл для неназванного пакета, использовать "package-info"
. Отметьте что использовать определенный набор символов, чтобы закодировать содержание файла, OutputStreamWriter
с выбранным набором символов может быть создан из OutputStream
от возвращенного объекта. Если Writer
от возвращенного объекта непосредственно используется для того, чтобы записать, его набор символов определяется реализацией. Инструмент обработки аннотации может иметь -encoding
флаг или аналогичная опция для того, чтобы определить это; иначе, это обычно будет кодировка по умолчанию платформы.
Чтобы избежать последующих ошибок, содержание исходного файла должно быть совместимым с исходной версией, используемой для этого выполнения.
name
- каноническое (полностью определенное) имя основного типа, объявляемого в этом файле или имени пакета, сопровождаемом ".package-info"
для файла информации о пакетеoriginatingElements
- введите или элементы пакета, причинно связанные с созданием этого файла, может игнорироваться или null
JavaFileObject
записать новый исходный файлFilerException
- если тот же самый путь был уже создан, тот же самый тип был уже создан, или имя не допустимо для типаIOException
- если файл не может быть созданJavaFileObject createClassFile(CharSequence name, Element... originatingElements) throws IOException
name
будьте именем пакета, сопровождаемым ".package-info"
; создание файла класса для неназванного пакета не поддерживается. Чтобы избежать последующих ошибок, содержание файла класса должно быть совместимым с исходной версией, используемой для этого выполнения.
name
- двоичное имя записанного типа или имя пакета, сопровождаемое ".package-info"
для файла информации о пакетеoriginatingElements
- введите или элементы пакета, причинно связанные с созданием этого файла, может игнорироваться или null
JavaFileObject
записать новый файл классаFilerException
- если тот же самый путь был уже создан, тот же самый тип был уже создан, или имя не допустимо для типаIOException
- если файл не может быть созданFileObject createResource(JavaFileManager.Location location, CharSequence pkg, CharSequence relativeName, Element... originatingElements) throws IOException
CLASS_OUTPUT
и SOURCE_OUTPUT
должен поддерживаться. Ресурс можно назвать относительно некоторого пакета (как источник и файлы класса), и оттуда относительным путем. В свободном смысле полный путь нового файла будет связью location
, pkg
, и relativeName
. Файлы, создаваемые через этот метод, не регистрируются для обработки аннотации, даже если бы полный путь файла соответствовал бы полному пути нового исходного файла или нового файла класса.
location
- расположение нового файлаpkg
- пакет, относительно которого файл нужно назвать, или пустая строка если ни одинrelativeName
- заключительные компоненты пути файлаoriginatingElements
- введите или элементы пакета, причинно связанные с созданием этого файла, может игнорироваться или null
FileObject
записать новый ресурсIOException
- если файл не может быть созданFilerException
- если тот же самый путь был уже созданIllegalArgumentException
- для неподдерживаемого расположенияIllegalArgumentException
- если relativeName
не относительноFileObject getResource(JavaFileManager.Location location, CharSequence pkg, CharSequence relativeName) throws IOException
CLASS_OUTPUT
и SOURCE_OUTPUT
должен поддерживаться.location
- расположение файлаpkg
- пакет, относительно которого файл должен искаться, или пустая строка если ни одинrelativeName
- заключительные компоненты пути файлаFilerException
- если тот же самый путь был уже открыт для того, чтобы записатьIOException
- если файл не может быть открытIllegalArgumentException
- для неподдерживаемого расположенияIllegalArgumentException
- если relativeName
не относительно
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.