IDirectoryStream Interfaz

Definición

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&lt;Path&gt; 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&lt;Path&gt; listSourceFiles(Path dir) throws IOException {
                  List&lt;Path&gt; result = new ArrayList&lt;&gt;();
                  try (DirectoryStream&lt;Path&gt; 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 java.lang.System.identityHashCode() para la instancia ajustada.

(Heredado de IJavaPeerable)
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 Dispose(); de lo contrario, no hace nada.

(Heredado de IJavaPeerable)
Finalized()

Se llama cuando se ha finalizado la instancia.

(Heredado de IJavaPeerable)
ForEach(IConsumer)

Realiza la acción dada para cada elemento de Iterable hasta que se hayan procesado todos los elementos o la acción produce una excepción.

(Heredado de IIterable)
Iterator()

Devuelve el iterador asociado a este DirectoryStream.

SetJniIdentityHashCode(Int32)

Establezca el valor devuelto por JniIdentityHashCode.

(Heredado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Objeto que se va a iterar en las entradas de un directorio.

(Heredado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Establezca el valor devuelto por PeerReference.

(Heredado de IJavaPeerable)
Spliterator()

Crea un Spliterator elemento sobre los elementos descritos por este Iterable.

(Heredado de IIterable)
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 self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

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 self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a