|
Spec-Zone .ru
спецификации, руководства, описания, API
|
T - Тип элемента возвратился iteratorpublic interface DirectoryStream<T> extends Closeable, Iterable<T>
В то время как DirectoryStream расширяется Iterable, это не общего назначения Iterable поскольку это поддерживает только сингл Iterator; вызов iterator метод, чтобы получить второй или последующий iterator броски IllegalStateException.
Важное свойство потока каталога Iterator это hasNext метод, как гарантируют, будет читать вперед по крайней мере одним элементом. Если hasNext возвраты метода true, и сопровождается звонком next метод, гарантируется что next метод не будет выдавать исключение из-за ошибки ввода-вывода, или потому что поток был closed. Iterator не поддерживает remove работа.
A DirectoryStream открывается после создания и закрывается, вызывая close метод. Закрытие потока каталога высвобождает любые средства, связанные с потоком. Отказ закрыть поток может привести к утечке ресурсов. Оператор попытки с ресурсами обеспечивает полезную конструкцию, чтобы гарантировать, что поток закрывается:
Path dir = ...
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path entry: stream) {
...
}
}
Как только поток каталога закрывается, тогда дальнейший доступ к каталогу, используя Iterator, ведет себя, как будто конец потока был достигнут. Должный читать вперед, Iterator может возвратить один или более элементов после того, как поток каталога был закрыт. Как только эти буферизованные элементы были считаны, тогда последующие звонки hasNext возвраты метода false, и последующие звонки next метод бросит NoSuchElementException.
Поток каталога не обязан быть асинхронно closeable. Если поток блокируется на потоковом iterator каталога, читающем из каталога, и другой поток вызывает close метод, тогда второй поток может блокировать, пока операция чтения не полна.
Если с ошибкой ввода-вывода встречаются, получая доступ к каталогу тогда, это вызывает Iterator's hasNext или next методы, чтобы бросить DirectoryIteratorException с IOException как причина. Как указано выше, hasNext метод, как гарантируют, будет читать вперед по крайней мере одним элементом. Это означает это если hasNext возвраты метода true, и сопровождается звонком next метод, тогда гарантируется что next метод не перестанет работать с a DirectoryIteratorException.
Элементы, возвращенные iterator, не находятся ни в каком определенном порядке. Некоторые файловые системы поддерживают особые связи к каталогу непосредственно и родительскому каталогу каталога. Записи, представляющие эти ссылки, не возвращаются iterator.
iterator является слабо непротиворечивым. Это ориентировано на многопотоковое исполнение, но не замораживает каталог, выполняя итерации, таким образом, это может (или не может) отражать обновления к каталогу, которые происходят после DirectoryStream создается.
Примеры использования: Предположите, что мы хотим список исходных файлов в каталоге. Этот пример использует и для - каждый и конструкции попытки с ресурсами.
List<Path> listSourceFiles(Path dir) throws IOException {
List<Path> result = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{c,h,cpp,hpp,java}")) {
for (Path entry: stream) {
result.add(entry);
}
} catch (DirectoryIteratorException ex) {
// I/O error encounted during the iteration, the cause is an IOException
throw ex.getCause();
}
return result;
}
Files.newDirectoryStream(Path)| Модификатор и Тип | Интерфейс и Описание |
|---|---|
static interface |
DirectoryStream.Filter<T>
Интерфейс, который реализуется объектами, которые решают, должна ли запись в каталоге быть принята или фильтроваться.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
Iterator<T> |
iterator()
Возвращает iterator, связанный с этим
DirectoryStream. |
forEach
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92