Condividi tramite


InputStream.ReadNBytes Metodo

Definizione

Overload

ReadNBytes(Int32)

Legge fino a un numero specificato di byte dal flusso di input.

ReadNBytes(Byte[], Int32, Int32)

Legge il numero di byte richiesto dal flusso di input nella matrice di byte specificata.

ReadNBytes(Int32)

Legge fino a un numero specificato di byte dal flusso di input.

[Android.Runtime.Register("readNBytes", "(I)[B", "GetReadNBytes_IHandler", ApiSince=33)]
public virtual byte[]? ReadNBytes (int len);
[<Android.Runtime.Register("readNBytes", "(I)[B", "GetReadNBytes_IHandler", ApiSince=33)>]
abstract member ReadNBytes : int -> byte[]
override this.ReadNBytes : int -> byte[]

Parametri

len
Int32

numero massimo di byte da leggere

Restituisce

Byte[]

matrice di byte contenente i byte letti da questo flusso di input

Attributi

Commenti

Legge fino a un numero specificato di byte dal flusso di input. Questo metodo si blocca fino a quando non viene rilevato il numero di byte richiesto, la fine del flusso o viene generata un'eccezione. Questo metodo non chiude il flusso di input.

La lunghezza della matrice restituita è uguale al numero di byte letti dal flusso. Se len è zero, non vengono letti byte e viene restituita una matrice di byte vuota. In caso contrario, fino a len byte vengono letti dal flusso. È possibile leggere meno di len byte se viene rilevata la fine del flusso.

Quando questo flusso raggiunge la fine del flusso, ulteriori chiamate di questo metodo restituiranno una matrice di byte vuota.

Si noti che questo metodo è destinato a casi semplici in cui è utile leggere il numero specificato di byte in una matrice di byte. La quantità totale di memoria allocata da questo metodo è proporzionale al numero di byte letti dal flusso associato da len. Pertanto, il metodo può essere chiamato in modo sicuro con valori molto grandi di len memoria sufficiente disponibile.

Il comportamento per il caso in cui il flusso di input viene chiuso in modo asincrono o il thread interrotto durante la lettura è specifico del flusso di input e pertanto non specificato.

Se si verifica un errore di I/O durante la lettura dal flusso di input, l'operazione può essere eseguita dopo alcuni, ma non tutti, i byte sono stati letti. Di conseguenza, il flusso di input potrebbe non trovarsi alla fine del flusso e potrebbe trovarsi in uno stato incoerente. È consigliabile chiudere tempestivamente il flusso se si verifica un errore di I/O.

Aggiunta in 11.

Documentazione java per java.io.InputStream.readNBytes(int).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a

ReadNBytes(Byte[], Int32, Int32)

Legge il numero di byte richiesto dal flusso di input nella matrice di byte specificata.

[Android.Runtime.Register("readNBytes", "([BII)I", "GetReadNBytes_arrayBIIHandler", ApiSince=33)]
public virtual int ReadNBytes (byte[]? b, int off, int len);
[<Android.Runtime.Register("readNBytes", "([BII)I", "GetReadNBytes_arrayBIIHandler", ApiSince=33)>]
abstract member ReadNBytes : byte[] * int * int -> int
override this.ReadNBytes : byte[] * int * int -> int

Parametri

b
Byte[]

matrice di byte in cui vengono letti i dati

off
Int32

offset iniziale in b in corrispondenza del quale vengono scritti i dati

len
Int32

numero massimo di byte da leggere

Restituisce

numero effettivo di byte letti nel buffer

Attributi

Commenti

Legge il numero di byte richiesto dal flusso di input nella matrice di byte specificata. Questo metodo blocca fino a quando len non vengono letti byte di dati di input, fine del flusso o viene generata un'eccezione. Viene restituito il numero di byte effettivamente letti, possibilmente zero. Questo metodo non chiude il flusso di input.

Nel caso in cui venga raggiunta la fine del flusso prima len della lettura dei byte, verrà restituito il numero effettivo di byte letti. Quando questo flusso raggiunge la fine del flusso, ulteriori chiamate di questo metodo restituiranno zero.

Se len è zero, non viene letto alcun byte e 0 viene restituito; in caso contrario, viene eseguito un tentativo di lettura fino a len byte.

Il primo byte letto viene archiviato nell'elemento b[off], quello successivo in b[off+1]e così via. Il numero di byte letti è, al massimo, uguale a len. Lasciare che k sia il numero di byte effettivamente letti; questi byte verranno archiviati in elementi b[off] fino ab[off+ k-1], lasciando gli elementi b[off+k] attraverso b[off+len-1] non interessati.

Il comportamento per il caso in cui il flusso di input viene chiuso in modo asincrono o il thread interrotto durante la lettura è specifico del flusso di input e pertanto non specificato.

Se si verifica un errore di I/O durante la lettura dal flusso di input, può farlo dopo alcuni, ma non tutti, i byte di sono stati aggiornati con i dati del flusso di b input. Di conseguenza, il flusso di input e b può essere in uno stato incoerente. È consigliabile chiudere tempestivamente il flusso se si verifica un errore di I/O.

Aggiunta in 9.

Documentazione java per java.io.InputStream.readNBytes(byte[], int, int).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a