IDirectoryStream Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Um objeto para iterar sobre as entradas em um diretório.
[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
- Implementações
Comentários
Um objeto para iterar sobre as entradas em um diretório. Um fluxo de diretório permite o uso conveniente do constructo for-each para iterar em um diretório.
<b Enquanto estende, não é uma finalidade > geral, pois dá suporte apenas a um único DirectoryStream; invocar o Iterable método para obter um segundo ou posterior iterador é geradoIterable.Iterator#iterator iteratorIllegalStateException
</b>
Uma propriedade importante do fluxo de Iterator diretório é que seu Iterator#hasNext() hasNext método tem a garantia de leitura antecipada por pelo menos um elemento. Se hasNext o método retornar truee for seguido por uma chamada para o next método, é garantido que o next método não gerará uma exceção devido a um erro de E/S ou porque o fluxo foi #close closed. O Iterator não dá suporte à Iterator#remove remove operação.
Um DirectoryStream é aberto após a criação e é fechado invocando o close método. Fechar um fluxo de diretório libera todos os recursos associados ao fluxo. A falha ao fechar o fluxo pode resultar em um vazamento de recurso. A instrução try-with-resources fornece um constructo útil para garantir que o fluxo seja fechado:
Path dir = ...
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path entry: stream) {
...
}
}
Depois que um fluxo de diretório é fechado, o acesso adicional ao diretório, usando o Iterator. se comporta como se o fim do fluxo tivesse sido atingido. Devido à leitura antecipada, pode Iterator retornar um ou mais elementos depois que o fluxo de diretório tiver sido fechado. Depois que esses elementos em buffer tiverem sido lidos, as chamadas subsequentes para o hasNext método retornarão falsee as next chamadas subsequentes ao método serão geradas NoSuchElementException.
Não é necessário que um fluxo de diretório seja assíncrono. Se um thread for bloqueado na leitura do iterador do fluxo de diretório do diretório e outro thread invocar o close método, o segundo thread poderá ser bloqueado até que a operação de leitura seja concluída.
Se um erro de E/S for encontrado ao acessar o diretório, isso fará com que os métodos ou Iterator os hasNextnextmétodos sejam lançados DirectoryIteratorException com a IOException causa. Conforme indicado acima, o hasNext método tem a garantia de leitura antecipada por pelo menos um elemento. Isso significa que, se hasNext o método retornar truee for seguido por uma chamada para o next método, será garantido que o next método não falhará com um DirectoryIteratorException.
Os elementos retornados pelo iterador não estão em nenhuma ordem específica. Alguns sistemas de arquivos mantêm links especiais para o próprio diretório e o diretório pai do diretório. As entradas que representam esses links não são retornadas pelo iterador.
O iterador é fracamente consistente. Ele é thread-safe, mas não congela o diretório durante a iteração, portanto, ele pode (ou não) refletir atualizações para o diretório que ocorrem após a DirectoryStream criação.
<b>Exemplos de uso:</b> Suponha que queremos uma lista dos arquivos de origem em um diretório. Este exemplo usa os constructos for-each e 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;
}
Adicionado em 1.7.
Java documentação para java.nio.file.DirectoryStream.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Propriedades
| Nome | Description |
|---|---|
| Handle |
Obtém o valor JNI do objeto Android subjacente. (Herdado de IJavaObject) |
| JniIdentityHashCode |
Retorna o valor da |
| JniManagedPeerState |
Estado do par gerenciado. (Herdado de IJavaPeerable) |
| JniObjectReferenceControlBlock |
Um objeto para iterar sobre as entradas em um diretório. (Herdado de IJavaPeerable) |
| JniPeerMembers |
Acesso ao membro e suporte à invocação. (Herdado de IJavaPeerable) |
| PeerReference |
Retorna uma JniObjectReference das instâncias de objeto Java encapsuladas. (Herdado de IJavaPeerable) |
Métodos
| Nome | Description |
|---|---|
| Close() |
Fecha esse fluxo e libera todos os recursos do sistema associados a ele. (Herdado de ICloseable) |
| Disposed() |
Chamado quando a instância foi descartada. (Herdado de IJavaPeerable) |
| DisposeUnlessReferenced() |
Se não houver referências pendentes a essa instância, então chamará |
| Finalized() |
Chamado quando a instância foi finalizada. (Herdado de IJavaPeerable) |
| ForEach(IConsumer) |
Executa a ação fornecida para cada elemento do |
| Iterator() |
Retorna o iterador associado a este |
| SetJniIdentityHashCode(Int32) |
Defina o valor retornado por |
| SetJniManagedPeerState(JniManagedPeerStates) |
Um objeto para iterar sobre as entradas em um diretório. (Herdado de IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
Defina o valor retornado por |
| Spliterator() |
Cria um |
| UnregisterFromRuntime() |
Cancele o registro dessa instância para que o runtime não a retorne de invocações futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Herdado de IJavaPeerable) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
Um objeto para iterar sobre as entradas em um diretório. |
| ToEnumerable(IIterable) |
Retorna um IEnumerable que itera em um JavaIIterable, permitindo |
| ToEnumerable<T>(IIterable) |
Retorna um IEnumerable<T> que itera em um JavaIIterable, marshaling de cada elemento para |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |