Langue

IDirectoryStream Interface

Définition

Objet à itérer sur les entrées d’un répertoire.

[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
Dérivé
Attributs
Implémente

Remarques

Objet à itérer sur les entrées d’un répertoire. Un flux de répertoires permet l’utilisation pratique de la construction for-each pour itérer sur un répertoire.

<b> S’étend DirectoryStreamIterable , il n’est pas à usage Iterable général, car il prend en charge uniquement un seul Iterator; appel de la #iterator iterator méthode pour obtenir une seconde ou un itérateur ultérieur lève IllegalStateException. </b>

Une propriété importante du flux de répertoires Iterator est que sa Iterator#hasNext() hasNext méthode est garantie en lecture avant par au moins un élément. Si hasNext la méthode retourne true, et est suivie d’un appel à la next méthode, il est garanti que la next méthode ne lève pas d’exception en raison d’une erreur d’E/S, ou parce que le flux a été #close closed. L’opération Iterator ne prend pas en charge l’opération Iterator#remove remove .

A DirectoryStream est ouvert lors de la création et est fermé en appelant la close méthode. La fermeture d’un flux d’annuaire libère toutes les ressources associées au flux. L’échec de la fermeture du flux peut entraîner une fuite de ressources. L’instruction try-with-resources fournit une construction utile pour s’assurer que le flux est fermé :

Path dir = ...
              try (DirectoryStream&lt;Path&gt; stream = Files.newDirectoryStream(dir)) {
                  for (Path entry: stream) {
                      ...
                  }
              }

Une fois qu’un flux de répertoire est fermé, l’accès supplémentaire au répertoire, à l’aide du Iteratorfichier , se comporte comme si la fin du flux a été atteinte. En raison d’une lecture anticipée, il Iterator peut retourner un ou plusieurs éléments après la fermeture du flux de répertoires. Une fois que ces éléments mis en mémoire tampon ont été lus, les appels suivants à la hasNext méthode retournent false, et les appels suivants à la next méthode lèveront NoSuchElementException.

Un flux de répertoires n’est pas nécessaire pour être fermé de manière asynchrone. Si un thread est bloqué sur l’itérateur du flux de répertoire à partir du répertoire et qu’un autre thread appelle la close méthode, le deuxième thread peut bloquer jusqu’à ce que l’opération de lecture soit terminée.

Si une erreur d’E/S est rencontrée lors de l’accès au répertoire, elle provoque la Iteratorlevée hasNext des données nextDirectoryIteratorException ou des méthodes avec la IOException cause. Comme indiqué ci-dessus, la hasNext méthode est garantie en lecture anticipée par au moins un élément. Cela signifie que si hasNext la méthode retourne true, et est suivie d’un appel à la next méthode, il est garanti que la next méthode ne échouera pas avec un DirectoryIteratorException.

Les éléments retournés par l’itérateur ne sont pas dans un ordre spécifique. Certains systèmes de fichiers conservent des liens spéciaux vers le répertoire lui-même et le répertoire parent du répertoire. Les entrées représentant ces liens ne sont pas retournées par l’itérateur.

L’itérateur est faiblement cohérent. Il s’agit d’un thread sécurisé, mais ne fige pas le répertoire lors de l’itération, de sorte qu’il peut (ou non) refléter les mises à jour du répertoire qui se produisent après la création de celui-ci DirectoryStream .

<b>Exemples d’utilisation :</b> Supposons que nous voulons obtenir une liste des fichiers sources dans un répertoire. Cet exemple utilise à la fois les constructions for-each et 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;
              }

Ajouté dans la version 1.7.

Java documentation pour java.nio.file.DirectoryStream.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Propriétés

Nom Description
Handle

Obtient la valeur JNI de l’objet Android sous-jacent.

(Hérité de IJavaObject)
JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniObjectReferenceControlBlock

Objet à itérer sur les entrées d’un répertoire.

(Hérité de IJavaPeerable)
JniPeerMembers

Prise en charge de l’accès aux membres et de l’appel.

(Hérité de IJavaPeerable)
PeerReference

Retourne une JniObjectReference instance d’objet Java encapsulée.

(Hérité de IJavaPeerable)

Méthodes

Nom Description
Close()

Ferme ce flux et libère toutes les ressources système associées.

(Hérité de ICloseable)
Disposed()

Appelé lorsque l’instance a été supprimée.

(Hérité de IJavaPeerable)
DisposeUnlessReferenced()

S’il n’existe aucune référence en suspens à cette instance, les appels Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
ForEach(IConsumer)

Exécute l’action donnée pour chaque élément jusqu’à Iterable ce que tous les éléments aient été traités ou que l’action lève une exception.

(Hérité de IIterable)
Iterator()

Retourne l’itérateur associé à ce DirectoryStream.

SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

(Hérité de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Objet à itérer sur les entrées d’un répertoire.

(Hérité de IJavaPeerable)
SetPeerReference(JniObjectReference)

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
Spliterator()

Crée un Spliterator sur les éléments décrits par ce Iterable.

(Hérité de IIterable)
UnregisterFromRuntime()

Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Hérité de IJavaPeerable)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Objet à itérer sur les entrées d’un répertoire.

ToEnumerable(IIterable)

Retourne un IEnumerable itération sur un JavaIIterable, ce qui permet foreach et LINQ d’être utilisé avec Java types de collection. Chaque élément est marshalé de son instance Java vers le type managé correspondant.

ToEnumerable<T>(IIterable)

Retourne un IEnumerable<T> itération sur un JavaIIterable, marshalant chaque élément sur T. Cela permet foreach et LINQ d’être utilisé avec des types de collection Java.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à