IDirectoryStream Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Objeto que se va a iterar en las entradas de un directorio.
[Android.Runtime.Register("java/nio/file/DirectoryStream", "", "Java.Nio.FileNio.IDirectoryStreamInvoker", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface IDirectoryStream : IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable, Java.Lang.IIterable
[<Android.Runtime.Register("java/nio/file/DirectoryStream", "", "Java.Nio.FileNio.IDirectoryStreamInvoker", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type IDirectoryStream = interface
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IIterable
- Derivado
- Atributos
- Implementaciones
Comentarios
Objeto que se va a iterar en las entradas de un directorio. Un flujo de directorio permite el uso conveniente de la construcción para cada construcción para iterar en un directorio.
<b Mientras extiende , no es de uso Iterable general, ya que solo admite un único Iterator; al invocar el #iterator iterator método para obtener un segundo iterador o posterior se produce IllegalStateException.IterableDirectoryStream>
</b>
Una propiedad importante de la secuencia de Iterator directorio es que su Iterator#hasNext() hasNext método está garantizado para leer por lo menos un elemento. Si hasNext el método devuelve truey va seguido de una llamada al next método , se garantiza que el next método no producirá una excepción debido a un error de E/S o porque la secuencia ha sido #close closed.
Iterator no admite la Iterator#remove remove operación.
DirectoryStream Se abre tras la creación y se cierra invocando el close método . Al cerrar un flujo de directorio, se liberan los recursos asociados a la secuencia. Si no se cierra la secuencia, se puede producir una pérdida de recursos. La instrucción try-with-resources proporciona una construcción útil para asegurarse de que la secuencia está cerrada:
Path dir = ...
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path entry: stream) {
...
}
}
Una vez que se cierra una secuencia de directorios, se obtiene acceso adicional al directorio mediante , Iteratorse comporta como si se alcanzase el final de la secuencia. Debido a la lectura anticipada, Iterator puede devolver uno o varios elementos después de cerrar la secuencia de directorios. Una vez leídos estos elementos almacenados en búfer, las llamadas posteriores al hasNext método devuelven falsey las llamadas posteriores al next método producirán NoSuchElementException.
No es necesario cerrar de forma asincrónica un flujo de directorio. Si un subproceso está bloqueado en el iterador de la secuencia de directorio que lee desde el directorio y otro subproceso invoca el close método , el segundo subproceso puede bloquearse hasta que se complete la operación de lectura.
Si se produce un error de E/S al acceder al directorio, hace que los Iteratormétodos o next de hasNext se inicien DirectoryIteratorException con IOException como causa. Como se indicó anteriormente, se garantiza que el hasNext método lea por lo menos un elemento. Esto significa que si hasNext el método devuelve truey va seguido de una llamada al next método , se garantiza que el next método no producirá un error con .DirectoryIteratorException
Los elementos devueltos por el iterador no están en ningún orden específico. Algunos sistemas de archivos mantienen vínculos especiales al propio directorio y al directorio primario del directorio. El iterador no devuelve entradas que representan estos vínculos.
El iterador es débilmente coherente. Es seguro para subprocesos, pero no inmoviliza el directorio mientras itera, por lo que puede (o no) reflejar las actualizaciones en el directorio que se producen después DirectoryStream de crearse.
<b>Ejemplos de uso:</b> Supongamos que queremos una lista de los archivos de origen de un directorio. En este ejemplo se usan las construcciones for-each y try-with-resources.
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;
}
Agregado en la versión 1.7.
Java documentación para java.nio.file.DirectoryStream.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Propiedades
| Nombre | Description |
|---|---|
| Handle |
Obtiene el valor JNI del objeto Android subyacente. (Heredado de IJavaObject) |
| JniIdentityHashCode |
Devuelve el valor de |
| JniManagedPeerState |
Estado del mismo nivel administrado. (Heredado de IJavaPeerable) |
| JniPeerMembers |
Compatibilidad con la invocación y el acceso de miembros. (Heredado de IJavaPeerable) |
| PeerReference |
Devuelve un JniObjectReference de la instancia de objeto Java ajustada. (Heredado de IJavaPeerable) |
Métodos
| Nombre | Description |
|---|---|
| Close() |
Cierra esta secuencia y libera los recursos del sistema asociados. (Heredado de ICloseable) |
| Disposed() |
Se llama cuando se ha eliminado la instancia. (Heredado de IJavaPeerable) |
| DisposeUnlessReferenced() |
Si no hay referencias pendientes a esta instancia, llama a |
| Finalized() |
Se llama cuando se ha finalizado la instancia. (Heredado de IJavaPeerable) |
| ForEach(IConsumer) |
Realiza la acción dada para cada elemento de |
| Iterator() |
Devuelve el iterador asociado a este |
| SetJniIdentityHashCode(Int32) |
Establezca el valor devuelto por |
| SetJniManagedPeerState(JniManagedPeerStates) |
Objeto que se va a iterar en las entradas de un directorio. (Heredado de IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
Establezca el valor devuelto por |
| Spliterator() |
Crea un |
| UnregisterFromRuntime() |
Anule el registro de esta instancia para que el entorno de ejecución no lo devuelva de invocaciones futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Heredado de IJavaPeerable) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Objeto que se va a iterar en las entradas de un directorio. |
| ToEnumerable(IIterable) |
Objeto que se va a iterar en las entradas de un directorio. |
| ToEnumerable<T>(IIterable) |
Objeto que se va a iterar en las entradas de un directorio. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |