Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 38466|Yanıt: 0

[İpucu] C#/.NET ile bir akışı bir dosyaya nasıl kaydedilir

[Bağlantıyı kopyala]
2021-5-16 tarihinde yayınlandı 21:12:58 | | |
Stream'i bir dosyaya kaydetme hakkındaki bazı blog yazılarına baktım,Birçoğu yanlış。 (Birkaç sorun buldum: düşük performans, akış çok büyük olduğunda anormal)

Bir Stream aldıktan sonra bu Stream'i kod olarak nasıl zarifçe kaydedilir?

En şık yöntem CopyTo veya CopyToAsync yöntemi olmalıdır


burada inputStream.Seek(0, SeekOrigin.Begin); Mutlaka değil, lütfen bu kodu kendi ihtiyaçlarınıza göre kullanın, örneğin akışı sadece 10. bayttan kopyalamanız gerekiyor vb

Asenkron yaklaşım kullanmak bu yazma için biraz daha uzun sürecek, ancak genel performansı daha iyi hale getirecek ve CPU'nun diğer görevleri üstlenebilmesi için




CopyToAsync kullanırken beklemeyi eklemeyi unutmayın, bu kodu çalıştırırken çalıştırmayı IO'ya teslim edeceksiniz, çoğu IO işleme işlemcisi CPU gerektirmez, böylece genel performans daha iyi olur

Ayrıca, iputStream dışarıdan geliyorsa, bu yöntemin içinde salmanızı önermem, neden? İyi bir akış kullandım ve bir işletmede geçtiğimde o dere öldü

İkinci yöntem, bellek çoğaltma önbelleğini kendiniz kontrol etmektir; bu da ek bir bellek kopyasına sahip olur


Bu yöntemin teması, yeni bayt[1024] değerini değiştirmenize olanak tanır ve kopyalanan önbellek üzerinde kontrol sağlar

Sonraki yöntemler önerilmeyenler ama yazarken kullanışlıdır


Yukarıdaki yöntem belleği iki kez kopyalayacak ve giriş kaynak uzunluğu 1G ise, 2G kaynak kaplar

Yukarıdaki gibi, aşağıdaki kodda gösterildiği gibi büyük bir önbellek talep etmek de vardır


Verimlilik ve kod zarafeti açısından, aslında CopyTo yönteminden ve akış nedeniyle daha geridirler. Uzunluk olarak uzunluk önbelleği belirlemez, bu yüzden ikinci yöntem kadar iyi değildir

Aşağıda çok yavaş bir yöntem var, bir bayt bir bayt yazmak çok yavaş


Transfer edilenler:Bağlantı girişi görünür.
(Son)




Önceki:NPOI Operasyonu Excel Detaylı Açıklaması
Önümüzdeki:X-Yönlendirilmiş HTTP isteği başlığında birden fazla IP adresi için
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com