Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat menyalin data antara aliran di .net?

Bagaimanakah saya dapat menyalin data antara aliran di .net?

DDD
Lepaskan: 2025-01-31 09:16:08
asal
386 orang telah melayarinya

How Can I Efficiently Copy Data Between Streams in .NET?

mengoptimumkan pemindahan data antara aliran dalam .net

Memindahkan data antara aliran adalah tugas pengaturcaraan yang kerap. .NET menawarkan beberapa kaedah, masing -masing sesuai dengan versi rangka kerja dan keperluan prestasi yang berbeza.

penyalinan asynchronous dengan (.net 4.5 dan kemudian): Stream.CopyToAsync

untuk prestasi optimum dalam versi yang lebih baru. NET, menggunakan kaedah Stream.CopyToAsync Pendekatan Asynchronous ini membolehkan pemprosesan serentak, mencegah menyekat sementara operasi salinan selesai.
using System.IO;
using System.Threading.Tasks;

// ...

await input.CopyToAsync(output);
Salin selepas log masuk

Penyalinan segerak dengan

(.net 4.0 dan kemudian): Stream.CopyTo dalam .net 4.0 dan kemudian versi, kaedah segerak

menyediakan alternatif yang lebih mudah untuk situasi di mana operasi asynchronous tidak diperlukan:

Stream.CopyTo

Kaedah ini mudah tetapi akan menghalang pelaksanaan sehingga salinan selesai.
using System.IO;

// ...

input.CopyTo(output);
Salin selepas log masuk

Penyalinan Stream Manual (.NET 3.5 dan lebih awal):

untuk rangka kerja yang lebih tua (3.5 dan ke bawah), penyalinan aliran manual diperlukan:

Kaedah manual ini menawarkan fleksibiliti untuk pengesanan kemajuan dan mengendalikan aliran panjang yang tidak diketahui. Saiz penampan adalah faktor utama dalam kecekapan; 32768 bait adalah titik permulaan yang baik. Eksperimen boleh mendedahkan saiz optimum untuk senario tertentu.
using System.IO;

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[32768]; // Optimized buffer size
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, read);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya dapat menyalin data antara aliran di .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan