FileChannel Classe
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 canal para ler, gravar, mapear e manipular um arquivo.
[Android.Runtime.Register("java/nio/channels/FileChannel", DoNotGenerateAcw=true)]
public abstract class FileChannel : Java.Nio.Channels.Spi.AbstractInterruptibleChannel, IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IGatheringByteChannel, Java.Nio.Channels.IScatteringByteChannel, Java.Nio.Channels.ISeekableByteChannel
[<Android.Runtime.Register("java/nio/channels/FileChannel", DoNotGenerateAcw=true)>]
type FileChannel = class
inherit AbstractInterruptibleChannel
interface IByteChannel
interface IReadableByteChannel
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IWritableByteChannel
interface IGatheringByteChannel
interface IScatteringByteChannel
interface ISeekableByteChannel
- Herança
- Atributos
- Implementações
Comentários
Um canal para ler, gravar, mapear e manipular um arquivo.
Um canal de arquivo é um SeekableByteChannel que está conectado a um arquivo. Ele tem uma posição atual dentro de seu arquivo que pode ser ambos #position() <i>queried</i> e #position(long) <i>modified</i>. O arquivo em si contém uma sequência de bytes de comprimento variável que pode ser lida e gravada e cuja corrente #size <i>size</i> pode ser consultada. O tamanho do arquivo aumenta quando bytes são gravados além do tamanho atual; o tamanho do arquivo diminui quando ele é #truncate <i>truncated</i>. O arquivo também pode ter alguns metadados associados, como permissões de acesso, tipo de conteúdo e hora de última modificação; essa classe não define métodos para acesso a metadados.
Além das operações familiares de leitura, gravação e fechamento de canais de bytes, essa classe define as seguintes operações específicas do arquivo:
<ul>
<li>
Bytes podem estar #read(ByteBuffer, long) read ou #write(ByteBuffer, long) <i>written</i> em uma posição absoluta em um arquivo de uma forma que não afete a posição atual do canal.
</li>
<li>
Uma região de um arquivo pode estar #map <i>mapped</i> diretamente na memória; para arquivos grandes, isso geralmente é muito mais eficiente do que invocar os métodos ou write usuaisread.
</li>
<li>
As atualizações feitas em um arquivo podem ser #force <i>forced out</i> para o dispositivo de armazenamento subjacente, garantindo que os dados não sejam perdidos no caso de uma falha do sistema.
</li>
<li>
Os bytes podem ser transferidos de um arquivo #transferTo <i>to some other channel</i>e #transferFrom <i>vice versa</i>, de uma forma que pode ser otimizada por muitos sistemas operacionais para uma transferência muito rápida diretamente para ou do cache do sistema de arquivos.
</li>
<li>
Uma região de um arquivo pode ser FileLock <i>locked</i> contra o acesso por outros programas.
</li>
</ul>
Os canais de arquivo são seguros para uso por vários threads simultâneos. O Channel#close close método pode ser invocado a qualquer momento, conforme especificado pela Channel interface. Apenas uma operação que envolve a posição do canal ou pode alterar o tamanho do arquivo pode estar em andamento a qualquer momento; tenta iniciar uma segunda operação desse tipo enquanto a primeira ainda está em andamento será bloqueada até que a primeira operação seja concluída. Outras operações, em particular aquelas que tomam uma posição explícita, podem continuar simultaneamente; se, de fato, elas dependem da implementação subjacente e, portanto, não são especificadas.
A exibição de um arquivo fornecido por uma instância dessa classe tem a garantia de ser consistente com outras exibições do mesmo arquivo fornecidas por outras instâncias no mesmo programa. A exibição fornecida por uma instância dessa classe pode ou não ser consistente com as exibições vistas por outros programas em execução simultânea devido ao cache executado pelo sistema operacional subjacente e atrasos induzidos por protocolos de sistema de arquivos de rede. Isso é verdadeiro independentemente da linguagem em que esses outros programas são escritos e se eles estão em execução no mesmo computador ou em algum outro computador. A natureza exata de tais inconsistências são dependentes do sistema e, portanto, não são especificadas.
Um canal de arquivo é criado invocando um dos #open open métodos definidos por essa classe. Um canal de arquivo também pode ser obtido de um objeto ou java.io.RandomAccessFile#getChannel RandomAccessFile um objeto existente java.io.FileInputStream#getChannel FileInputStreamjava.io.FileOutputStream#getChannel FileOutputStreaminvocando o método desse getChannel objeto, que retorna um canal de arquivo que está conectado ao mesmo arquivo subjacente. Quando o canal de arquivo é obtido de um fluxo existente ou de um arquivo de acesso aleatório, o estado do canal de arquivo é intimamente conectado ao do objeto cujo getChannel método retornou o canal. Alterar a posição do canal, seja explicitamente ou lendo ou escrevendo bytes, alterará a posição do arquivo do objeto de origem e vice-versa. Alterar o comprimento do arquivo por meio do canal de arquivo alterará o comprimento visto por meio do objeto de origem e vice-versa. Alterar o conteúdo do arquivo escrevendo bytes alterará o conteúdo visto pelo objeto de origem e vice-versa.
"modo aberto">
Em vários pontos, essa classe especifica que é necessária uma instância "aberta para leitura", "aberta para gravação" ou "aberta para leitura e gravação". Um canal obtido por meio do java.io.FileInputStream#getChannel getChannel método de uma java.io.FileInputStream instância será aberto para leitura. Um canal obtido por meio do java.io.FileOutputStream#getChannel getChannel método de uma java.io.FileOutputStream instância será aberto para gravação. Por fim, um canal obtido por meio do java.io.RandomAccessFile#getChannel getChannel método de uma java.io.RandomAccessFile instância será aberto para leitura se a instância tiver sido criada com o modo "r" e estará aberto para leitura e gravação se a instância tiver sido criada com o modo "rw".
"append-mode">
Um canal de arquivo aberto para gravação pode estar no modo de acréscimo, por exemplo, se ele foi obtido de um fluxo de saída de arquivo que foi criado invocando o java.io.FileOutputStream#FileOutputStream(java.io.File,boolean) FileOutputStream(File,boolean) construtor e passando true para o segundo parâmetro. Nesse modo, cada invocação de uma operação de gravação relativa primeiro avança a posição para o final do arquivo e grava os dados solicitados. Se o avanço da posição e da gravação dos dados são feitos em uma única operação atômica é dependente do sistema e, portanto, não especificado.
Adicionado em 1.4.
Java documentação para java.nio.channels.FileChannel.
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.
Construtores
| Nome | Description |
|---|---|
| FileChannel() |
Inicializa uma nova instância dessa classe. |
| FileChannel(IntPtr, JniHandleOwnership) |
Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime. |
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| IsOpen |
Retornará true se este canal estiver aberto. (Herdado de AbstractInterruptibleChannel) |
| JniIdentityHashCode |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| JniPeerMembers |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| PeerReference |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. |
Métodos
| Nome | Description |
|---|---|
| Begin() |
Marca o início de uma operação de E/S que pode bloquear indefinidamente. (Herdado de AbstractInterruptibleChannel) |
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Close() |
Fecha este canal. (Herdado de AbstractInterruptibleChannel) |
| Dispose() |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| Dispose(Boolean) |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| End(Boolean) |
Marca o fim de uma operação de E/S que pode bloquear indefinidamente. (Herdado de AbstractInterruptibleChannel) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| Force(Boolean) |
Força todas as atualizações para o arquivo deste canal a serem gravadas no dispositivo de armazenamento que o contém. |
| ForceAsync(Boolean) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| ImplCloseChannel() |
Fecha este canal. (Herdado de AbstractInterruptibleChannel) |
| JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| Lock() |
Adquire um bloqueio exclusivo no arquivo deste canal. |
| Lock(Int64, Int64, Boolean) |
Adquire um bloqueio na região especificada do arquivo deste canal. |
| Map(FileChannel+MapMode, Int64, Int64) |
Mapeia uma região do arquivo desse canal diretamente na memória. |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| Open(IPath, ICollection<IOpenOption>, IFileAttribute[]) |
Abre ou cria um arquivo, retornando um canal de arquivo para acessar o arquivo. |
| Open(IPath, IOpenOption[]) |
Abre ou cria um arquivo, retornando um canal de arquivo para acessar o arquivo. |
| Position() |
Retorna a posição do arquivo deste canal. |
| Position(Int64) |
Define a posição do arquivo desse canal. |
| Read(ByteBuffer, Int64) |
Lê uma sequência de bytes desse canal no buffer fornecido, começando na posição de arquivo fornecida. |
| Read(ByteBuffer) |
Lê uma sequência de bytes desse canal no buffer fornecido. |
| Read(ByteBuffer[], Int32, Int32) |
Lê uma sequência de bytes desse canal em uma subsequência dos buffers fornecidos. |
| Read(ByteBuffer[]) |
Lê uma sequência de bytes desse canal nos buffers fornecidos. |
| ReadAsync(ByteBuffer, Int64) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| ReadAsync(ByteBuffer) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| ReadAsync(ByteBuffer[], Int32, Int32) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| ReadAsync(ByteBuffer[]) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| Size() |
Retorna o tamanho atual do arquivo deste canal. |
| ToArray<T>() |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| TransferFrom(IReadableByteChannel, Int64, Int64) |
Transfere bytes para o arquivo deste canal do canal de bytes legível especificado. |
| TransferFromAsync(IReadableByteChannel, Int64, Int64) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| TransferTo(Int64, Int64, IWritableByteChannel) |
Transfere bytes do arquivo deste canal para o canal de bytes gravável especificado. |
| TransferToAsync(Int64, Int64, IWritableByteChannel) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| Truncate(Int64) |
Trunca o arquivo desse canal para o tamanho fornecido. |
| TruncateAsync(Int64) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| TryLock() |
Tenta adquirir um bloqueio exclusivo no arquivo deste canal. |
| TryLock(Int64, Int64, Boolean) |
Tenta adquirir um bloqueio na região especificada do arquivo deste canal. |
| UnregisterFromRuntime() |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Write(ByteBuffer, Int64) |
Grava uma sequência de bytes nesse canal do buffer fornecido, começando na posição de arquivo fornecida. |
| Write(ByteBuffer) |
Grava uma sequência de bytes nesse canal do buffer fornecido. |
| Write(ByteBuffer[], Int32, Int32) |
Grava uma sequência de bytes nesse canal de uma subsequência dos buffers fornecidos. |
| Write(ByteBuffer[]) |
Grava uma sequência de bytes neste canal dos buffers fornecidos. |
| WriteAsync(ByteBuffer, Int64) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| WriteAsync(ByteBuffer) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| WriteAsync(ByteBuffer[], Int32, Int32) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| WriteAsync(ByteBuffer[]) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| IJavaPeerable.Finalized() |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| IJavaPeerable.JniManagedPeerState |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Um canal para ler, gravar, mapear e manipular um arquivo. (Herdado de Object) |
| ISeekableByteChannel.Position(Int64) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| ISeekableByteChannel.Truncate(Int64) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
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 canal para ler, gravar, mapear e manipular um arquivo. |
| ReadAsync(IReadableByteChannel, ByteBuffer) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| ReadAsync(IScatteringByteChannel, ByteBuffer[], Int32, Int32) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| ReadAsync(IScatteringByteChannel, ByteBuffer[]) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |
| WriteAsync(IGatheringByteChannel, ByteBuffer[], Int32, Int32) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| WriteAsync(IGatheringByteChannel, ByteBuffer[]) |
Um canal para ler, gravar, mapear e manipular um arquivo. |
| WriteAsync(IWritableByteChannel, ByteBuffer) |
Um canal para ler, gravar, mapear e manipular um arquivo. |