Ho letto alcuni post online sul salvataggio di Stream in un file,Molti sono sbagliati。 (Ho riscontrato diversi problemi: scarse prestazioni, anomalie quando il flusso è troppo grande)
Dopo aver fatto una diretta, come salvare elegantemente questa diretta in codice
Il metodo più elegante dovrebbe essere tramite CopyTo o CopyToAsync
qui inputStream.Seek(0, SeekOrigin.Begin); Non necessariamente, usa questo codice in base alle tue esigenze, ad esempio devi copiare il flusso dal decimo byte, ecc
L'uso dell'approccio asincrono richiederà un po' più di tempo per questa scrittura, ma offrirà prestazioni complessive migliori e permetterà alla CPU di gestire altri compiti
Nota che quando si usa CopyToAsync, ricorda di aggiungere await; quando esegui questo codice, passerai l'esecuzione all'IO; la maggior parte dell'elaborazione IO non richiede la CPU per essere calcolata, così da migliorare le prestazioni complessive
Inoltre, se l'iputStream entra dall'esterno, allora non consiglio di rilasciarlo all'interno di questo metodo, perché? Ho usato un buon ruscello e si è interrotto quando sono passato in un'attività
Il secondo metodo è controllare tu stesso la cache di replicazione della memoria, che avrà una copia di memoria aggiuntiva
Questo metodo permette di modificare il valore del nuovo byte[1024], dandoti il controllo sulla cache copiata
I seguenti sono alcuni metodi che non sono raccomandati, ma che sono comodi durante la scrittura
Il metodo sopra copierà la memoria due volte e, se la lunghezza della risorsa di input è 1G, occuperà 2G di risorse
Simile a quanto sopra, richiedere una grande cache, come mostrato nel seguente codice
In termini di efficienza ed eleganza del codice, sono in realtà inferiori al metodo CopyTo, e a causa del flusso di flusso. La lunghezza come lunghezza non determina la cache, quindi non è buona come il secondo metodo
Qui sotto c'è un metodo molto lento, scrivere un byte per un byte è molto lento
Trasferito da:Il login del link ipertestuale è visibile. (Fine)
|