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

Bagaimanakah saya dapat menyalin data antara aliran di .net?

DDD
DDDasal
2025-01-31 09:16:08364semak imbas

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.
<code class="language-csharp">using System.IO;
using System.Threading.Tasks;

// ...

await input.CopyToAsync(output);</code>

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.
<code class="language-csharp">using System.IO;

// ...

input.CopyTo(output);</code>

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.
<code class="language-csharp">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);
    }
}</code>

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:
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