Java. Полное руководство. 8-е издание. С. Н. Тригуб Перевод с английского и редакция
Скачать 25.04 Mb.
|
true, если вызывающий объект интерфейса Path является абсолютным. В противном случае возвращает значение f a l s Если путь является абсолютным, возвращается путь. В противном случае, если путь не содержит корневой каталог, путь предваряется корневым каталогом, определенным вызывающим объектом интерфейса Path, а результат возвращается. Если путь пуст, возвращается вызывающий объект В противном случае поведение не определено Если путь является абсолютным, возвращается путь. В противном случае, если путь не содержит корневой каталог, путь предваряется корневым каталогом, определенным вызывающим объектом Path, а результат возвращается. Если путь пуст, возвращается вызывающий объект интерфейса В противном случае поведение не определено Возвращает значение true, если вызывающий объект интерфейса Path начинается с пути, определенного аргументом путь. В противном случае возвращает значение Возвращает значение true, если вызывающий объект интерфейса Path начинается с пути, определенного аргументом путь. В противном случае возвращает значение f a l s Возвращает вызывающий объект интерфейса Path как абсолютный путь Возвращает строковое представление вызывающего объекта интерфейса Еще один момент при обновлении устаревшего кода, который использует класс File, определенный в пакете java.io, можно преобразовать экземпляр класса File в экземпляр интерфейса, вызвав метод toPath () для объекта класса File. Этот метод был добавлен к классу File в JDK 7. Кроме того, можно получить экземпляр класса File, вызвав метод toFile ( ), определенный винтер фейсе Класс F i l e Большинство действий, которые вы выполняете с файлами, представлены статическими методами класса Files. Файл, с которым осуществляются действия, задает его путь. Таким образом, методы класса Files используют объект интерфейса Path, чтобы определить используемый файл. Класс Files содержит широкое разнообразие функциональных возможностей. Например, у него есть методы, позволяющие открывать или создавать файл, расположенный по определенному пути. Вы можете получить информацию об объекте интерфейса Path — исполняемый ли это файл, скрытый или только для чтения. Класс Files также предостав- 6 4 8 Часть II. Библиотека Java ляет методы, позволяющие вам копировать или перемещать файлы. Некоторые его методы представлены в табл. 20.6. Кроме исключения I O E x c e p t i o n , возможна передача и некоторых других исключений. Таблица 20.6. Некоторые его методы, определенные в классе F i l e s Метод Описание static Path copy(Path ист наз н , CopyOption ... как throws IOException static Path createDirectory(Path путь атрибуты throws IOException static Path createFile (Path Создает файл, путь к которому определяет параметр путь е At tribute> ... путь. Атрибуты файла указаны в параметре атрибуты атрибуты throws Копирует файл, определенный параметром ист, в позицию, указанную параметром назн. Параметр как определяет, как будет осуществляться копирование Создает каталог, путь которого определяется параметром путь. Атрибуты каталога определяет параметр атрибуты void delete(Path путь throws IOException static boolean exists(Path путь. парам boolean isDirectory(Path путь парам boolean isExecutable(Path путь boolean isHidden(Path путь throws IOException static boolean isReadable(Path путь boolean isRegularFile(Path путь парам boolean isWritable(Path путь) Удаляет файл, путь к которому определяет параметр путь Возвращает значение true, если файл, определенный параметром путь существует, и значение false — в противном случае. Если параметр парам не определен, то используются символические ссылки. Чтобы предотвратить следование по символическим ссылкам, передайте в параметре парам значение NOFOLLOW_ Возвращает значение true, если параметр путь определяет каталоги значение f al se — в противном случае. Если параметр парам не определен, то используются символические ссылки. Чтобы предотвратить следование по символическим ссылкам, передайте в параметре парам значение Возвращает значение true, если файл, определенный параметром путь является исполняемыми значение false — в противном случае Возвращает значение true, если файл, определенный параметром путь является скрытыми значение false — в противном случае Возвращает значение true, если файл, определенный параметром путь, допускает чтение, и значение false — в противном случае Возвращает значение true, если параметр путь определяет файл, и значение false — в противном случае. Если параметр парам не определен, то используются символические ссылки. Чтобы предотвратить следование по символическим ссылкам, передайте в параметре парам значение Возвращает значение true, если файл, определенный параметром путь, допускает запись, и значение f а 1 s е — в противном случае Глава 20. Исследование N10 6 4 Окончание табл. 20.6 Метод Описание static Path move(Path ист наз н , CopyOption ... как путь. как throws IOException static DirectoryStream newDirectoryStream(Path путь throws IOException static InputStream newInputStream (Path путь. как throws IOException static OutputStream newOutputStream (Path путь. как путь парам BasicFileAttributes> A readAttributes (Path путь типА трибу та. парам throws IOException static long size (Path путь) throws Перемещает файл, определенный параметром ист, в позицию, указанную параметром назн. Параметр как определяет, как будет осуществляться копирование Открывает файл, определенный параметром путь, как указано параметром как. Возвращает байтовый канал интерфейса SeekableByteChannel для файла. Текущая позиция этого байтового канала может быть изменена. Интерфейс SeekableByteChannel реализован классом Открывает каталог, определенный параметром путь. Возвращает объект Directory St ream, связанный с каталогом Открывает файл, определенный параметром путь, так, как указано параметром как. Возвращает объект класса InputStream, связанный с файлом Открывает файл, определенный вызывающим объектом, как указано параметром как. Возвращает объект класса OutputStream, связанный с файлом Возвращает значение true, если файл, определенный параметром путь, не существует, и значение false — в противном случае. Если параметр парам не определен, то используются символические ссылки. Чтобы предотвратить следование по символическим ссылкам, передайте в параметре парам значение NOFOLLOW_ Получает атрибуты, связанные с файлом, определенным параметром путь. Тип передаваемых атрибутов определяется параметром типАтрибута. Если параметр парам не определен, то используются символические ссылки. Чтобы предотвратить следование по символическим ссылкам, передайте в параметре парам значение Возвращает размер файла, определенного параметром путь Обратите внимание на то, что некоторые методы в табл. 20.6 получают аргумент типа OpenOption. Это интерфейс, описывающий способ открытия файла. Его реализует класс StandardOpenOption, определяющий перечисление, значения которого представлены в табл. Таблица 20.7. Стандартные параметры открытия Значение Смысл APPEND CREATE CREATE_NEW D Задает запись вывода вконец файла Задает создание файла, если он еще не существует Задает создание файла, только если он еще не существует Задает удаление файла, когда он закрывается 6 5 Часть II. Библиотека Окончание табл. 20.7 Значение Смысл DSYNC Задает немедленную запись вносимых изменений в физический файл. Обычно, для повышения производительности, изменения в файле буферизируются файловой системой и записываются только при необходимости READ Открыть файл для операций ввода SPARSE Указывает файловой системе, что файл разрежена значит, он не может быть полностью заполнен данными. Если файловая система не поддерживает разреженные файлы, это значение параметра игнорируется SYNC Задает немедленную запись вносимых изменений файла или его метаданных в физический файл. Обычно, для повышения производительности, изменения в файле буферизируются файловой системой и записываются только при необходимости TRUNCATE_EXISTING Задает усечение существующего ранее файла при открытии для вывода, уменьшая его длину до нуля WRITE Открывает файл для операций вывода Класс P a t h Поскольку Path — это интерфейса не класс, вы не можете создать его экземпляр непосредственно, с помощью конструктора. Вместо этого вы получаете объект пути, вызывая метод, который возвращает его. Как правило, для этого используется метод get () , определяемый классом Paths. Существует две формы метода get () . Одна, используемая в этой главе, имеет такой вид Path get(String имяпути, String ... части) Он возвращает объект, инкапсулирующий определенный путь. Путь может быть задан двумя способами. Если параметр части не используется, то путь должен быть полностью определен параметром имяпути. В качестве альтернативы вы можете передать путь по частям, с первой частью в параметре имяпут и ив последующих частях, определенных в аргументе переменной длины параметра части В любом случае, если определенный путь синтаксически недопустим, метод get () передаст исключение Вторая форма метода get () создает путь из идентификатора URI и имеет такой вид Path get(URI u Возвращается путь, соответствующий значению параметра u r i Следует понять, что создание пути к файлу не открывает и не создает файл. В результате просто создается объект, который инкапсулирует путь к каталогу файла. Интерфейсы атрибутов файла С файлами связан ряд атрибутов — время создания файла, время его последней модификации, является ли файл каталогом и его размер. Система NIO организует файловые атрибуты в несколько разных интерфейсов. Атрибуты представлены иерархией интерфейсов, определенных в пакете java.nio. file.attribute. Верховным является интерфейс BasicFileAttributes. Он инкапсулирует набор атрибутов Глава 20. Исследование N10 6 5 которые обычно используются большинством файловых систем. Методы, определенные в интерфейсе BasicFileAttributes, представлены в табл. Таблица 20.8. Методы, определенные интерфейсом BasicFileAttributes Оййсаяие Возвращает время создания файла. Если файловая система не поддерживает время создания, то возвращается значение, зависящее от реализации Возвращает ключ файла. Если это не поддерживается, возвращается значение Возвращает значение true, если файл представляет собой каталог Возвращает значение true, если файл является не файлом, а символической ссылкой или каталогом Возвращает значение true, если файл является обычным файлом, а не каталогом или символической ссылкой Возвращает значение true, если файл — символическая ссылка Возвращает время последнего обращения к файлу. Если файловая система не поддерживает время последнего обращения, то возвращается значение, зависящее от реализации Возвращает время последней модификации файла. Если файловая система не поддерживает время последней модификации, то возвращается значение, зависящее от реализации Возвращает размер файла От интерфейса е A11 г i bu t e s происходят два интерфейса Do s F i 1 e - Attributes и PosixFileAttributes. Интерфейс описывает атрибуты, связанные с файловой системой FAT, которые ранее были представлены файловой системой DOS. Здесь определены методы, указанные в табл. Таблица 20.9. Методы, определенные интерфейсом creationTime() Object f i l e K e y O boolean isDirectory() boolean i s O t h e r O boolean isRegularFile() boolean isSymbolicLink() FileTime lastAccessTime() FileTime lastModifiedTime() long size() Метод Описание boolean Возвращает значение true, если файл помечен как архивный, и значение false — в противном случае Возвращает значение true, если файл помечен как скрытый, и значение false — в противном случае 1 еап Возвращает значение t rue, если файл помечен как только для чтения () и значение false — в противном случае еап is- Возвращает значение t rue, если файл помечается как системный, и значение в противном случае______________________________________ Интерфейс PosixFileAttributes инкапсулирует атрибуты, определенные по стандартам POSIX (Portable Operating System Interface — переносимый интерфейс операционных систем. Здесь определены методы, представленные в табл. 20.10. 6 5 Часть II. Библиотека Таблица 20.10. Методы, определенные интерфейсом o s i x F i l e A t t r i b u t e s Метод Описание GroupPrincipal g r o u p (Возвращает группу владельца файла o w n e r (Возвращает владельца файла p e r m i s s i o n s (Возвращает права файла Есть разные способы доступа к атрибутам файла. Можно получить объект, который инкапсулирует атрибуты файла, вызвав статический метод readAttrib- utes () , определенный в классе Files. Вот одна из его форм А extends BasicFileAttributes> A readAttributes(Path путь типАтрибута, LinkOption... парам throws Этот метод возвращает ссылку на объект, который определяет атрибуты, связанные с файлом, указанным параметром путь Специфический тип атрибутов определяется как объект класса Class в параметре типАтрибута. Например, чтобы получить основные атрибуты файла, передайте в параметре типАтрибута значение BasicFileAttributes. class. Для атрибутов DOS используйте значение DosFileAttributes. class, а для атрибутов POSIX — значение PosixFileAttributes . class. Необязательные параметры ссылки передаются в параметре парам Если он не определен, то используются символические ссылки. Метод возвращает ссылку на требуемый атрибут. Если требуемый тип атрибута недоступен, передается исключение UnsupportedOperationException. Используя возвращенный объект, вы можете обратиться к атрибутам файла. Еще один способ доступа к атрибутам файла подразумевает вызов метода get- FileAttributeView () , определенного в классе Files. Система NIO определяет несколько интерфейсов представления атрибутов, включая AttributeView, BasicFileAttributeView, DosFileAttributeView и PosixFileAttribute- View, кроме прочих. Хотя мы не будем использовать представления атрибута в этой главе, это средство может оказаться полезным в некоторых ситуациях. В некоторых случаях вам ненужно будет использовать сами интерфейсы атрибута файла, поскольку класс Files предоставляет удобные статические методы, позволяющие обращаться к некоторым атрибутам. Например, класс Files включает такие методы, как isHidden ( ) и isWritable (Важно понять, что не все файловые системы поддерживают всевозможные атрибуты. Например, атрибуты файла DOS относятся к файловой системе FAT, хотя сначала они были определены в файловой системе DOS. Те атрибуты, которые относятся к широкому разнообразию файловых систем, описаны в интерфейсе. Поэтому в примерах данной главы используются эти атрибуты. Классы F i l e S y s t e m , F i l e S y s t e m s и F i l e s t o r Комплект JDK 7 облегчает доступ к файловой системе, предоставляя в пакете java. nio. file дополнительные классы FileSystem и FileSystems. Фактически, используя метод newFileSystem () , определенный в классе FileSystems, можно даже получить новую файловую систему. Класс Filestore инкапсулирует систему хранения файла. Хотя эти классы не используются в данной главе непосредственно, вы можете найти их полезными в собственных приложениях Глава 20. Исследование N10 6 5 Использование системы Этот раздел иллюстрирует применение системы NIO для множества задач. Однако вначале следует подчеркнуть, что с выпуском JDK 7 была существенно расширена как сама система NIO, таки область ее применения. Как упоминалось, усовершенствованная версия иногда называется N10.2. В результате появления системы N10.2 был изменен способ написания кода на базе системы NIO, а также расширен диапазон задач, к которым она может быть применена. В большей части материала и примеров этой главы используются средства системы N10.2, поэтому для работы необходим комплект JDK версии 7 или выше. Однако в конце главы дано краткое описание кода, использованного до JDK 7, — в помощь тем программистам, которые работают с системой доили поддерживают устаревший код. Помните! Для большинства примеров этой главы требуется комплект JDK Ранее главной задачей системы NIO был канальный ввод-вывод, и это все еще остается ее важнейшей областью применения. Однако теперь вы можете использовать систему NIO и для потокового ввода-вывода, и для выполнения операций файловой системы. В результате обсуждение использования системы NIO делится натри части: • для канального ввода-вывода; • для потокового ввода-вывода; • для операций файловой системы. Поскольку наиболее распространенным устройством ввода-вывода является диск с файлами, далее в этой главе они и используются. Поскольку все канальные операции с файлами имеют байтовую основу, типом буферов, которые нам предстоит использовать, будет ByteBuf Прежде чем вы сможете открыть файл для доступа при помощи системы NIO, необходимо получить объект интерфейса Path, который описывает файл. Один из способов сделать это — вызов метода фабрики Paths get ( ), который был описан ранее. В приведенных здесь примерах используется такая форма метода get (). |