IDirectoryStream Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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<Path> 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<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;
}
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 |
| 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 |
| 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’à |
| Iterator() |
Retourne l’itérateur associé à ce |
| SetJniIdentityHashCode(Int32) |
Définissez la valeur retournée par |
| 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 |
| Spliterator() |
Crée un |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| 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 |
| ToEnumerable<T>(IIterable) |
Retourne un IEnumerable<T> itération sur un JavaIIterable, marshalant chaque élément sur |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |