Idioma

IDirectoryStream Interface

Definição

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&lt;Path&gt; 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&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;
              }

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 java.lang.System.identityHashCode() instância encapsulada.

(Herdado de IJavaPeerable)
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á Dispose(); caso contrário, não fará nada.

(Herdado de IJavaPeerable)
Finalized()

Chamado quando a instância foi finalizada.

(Herdado de IJavaPeerable)
ForEach(IConsumer)

Executa a ação fornecida para cada elemento do Iterable até que todos os elementos tenham sido processados ou a ação lance uma exceção.

(Herdado de IIterable)
Iterator()

Retorna o iterador associado a este DirectoryStream.

SetJniIdentityHashCode(Int32)

Defina o valor retornado por JniIdentityHashCode.

(Herdado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Um objeto para iterar sobre as entradas em um diretório.

(Herdado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Defina o valor retornado por PeerReference.

(Herdado de IJavaPeerable)
Spliterator()

Cria um Spliterator sobre os elementos descritos por este Iterable.

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

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

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 foreach que e LINQ sejam usados com tipos de coleção Java. Cada elemento é empacotado de sua instância de Java para o tipo gerenciado correspondente.

ToEnumerable<T>(IIterable)

Retorna um IEnumerable<T> que itera em um JavaIIterable, marshaling de cada elemento para T. Isso permite que foreach o LINQ seja usado com tipos de coleção Java.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a