Soru:
Arasında farklı nedir FileStream
ve StreamWriter
içinde .Net ?
Hangi bağlamı kullanman gerekiyor? Avantajları ve dezavantajları nedir?
Bu ikisini bir araya getirmek mümkün mü?
Yanıtlar:
Dotnet'te FileStream ve StreamWriter arasındaki fark nedir?
A FileStream
, bir Stream
. Tüm Akışlar gibi, yalnızca byte[]
verilerle ilgilenir .
A StreamWriter : TextWriter
, bir Akarsu dekoratörüdür. Bir TextWriter dize veya karakter gibi Metin verilerini kodlar byte[]
ve ardından bağlantılı olana yazar Stream
.
Hangi bağlamı kullanman gerekiyor? Avantajları ve dezavantajları nedir?
byte[]
Verileriniz olduğunda çıplak bir FileStream kullanırsınız . StreamWriter
Metin yazmak istediğinizde bir eklersiniz . Daha karmaşık veriler yazmak için Biçimlendirici veya Serileştirici kullanın.
Bu ikisini bir araya getirmek mümkün mü?
Evet. Bir StreamWriter oluşturmak için her zaman bir Akışa ihtiyacınız vardır. Yardımcı yöntem System.IO.File.CreateText("path")
onları kombinasyon halinde oluşturacaktır ve sonra yalnızca dış yazıcıyı Dispose () etmeniz gerekir.
FileStream bayt yazar, StreamWriter metin yazar. Bu kadar.
Bir FileStream, açıkça çalışma dosyaları için tasarlanmıştır.
Bir StreamWriter, herhangi bir Akış türüne ( ağ soketleri, dosyalar vb .) Akış yapmak için kullanılabilir .
ScottGu, farklı Akış nesnelerini burada oldukça güzel bir şekilde açıklıyor: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
Eh, MSDN'den FileStream
:
Hem zaman uyumlu hem de zaman uyumsuz okuma ve yazma işlemlerini destekleyen bir dosya etrafında bir Akış gösterir.
ve şunun için MSDN StreamWriter
:
Belirli bir kodlamada bir akışa karakter yazmak için bir TextWriter uygular.
En belirgin fark, yalnızca yazma FileStream
sırasında okuma / yazma işlemlerine izin vermesidir StreamWriter
.
StreamWriter
Sayfa ekleme devam ediyor:
StreamWriter, belirli bir kodlamada karakter çıktısı için tasarlanmıştır, oysa Stream'den türetilen sınıflar bayt girişi ve çıkışı için tasarlanmıştır.
Yani ikinci bir fark, FileStream
baytlar StreamWriter
için, metin içindir.
Bilinen veri kaynaklarına bilgi çıkışında kullanılan iki farklı düzeydir.
A FileStream
, kavramsal olarak bir konuma işaret eden ve o konuma gelen ve / veya bu konumdan giden verileri işleyebilen bir mekanizma olan bir Akış türüdür. Dosyalara, ağ bağlantılarına, belleğe, kanallara, konsola, hata ayıklama ve izleme dinleyicilerine ve diğer birkaç veri kaynağına okuma / yazma için akışlar mevcuttur. Özellikle, FileStream
dosya sistemine okuma ve yazma işlemleri gerçekleştirmek için vardır. Çoğu akış, kullanımlarında oldukça düşük seviyelidir ve verileri bayt olarak ele alır.
A StreamWriter
, düz metin çıktısını almak için bu akışı kullanmayı basitleştiren bir Akış için bir sarmalayıcıdır. Baytlar yerine dizeler alan yöntemleri ortaya çıkarır ve bayt dizilerine ve bayt dizilerinden gerekli dönüştürmeleri gerçekleştirir. Başka Yazarlar da var; XML formatında XmlTextWriter
veri yazmayı kolaylaştıran diğer ana kullanacağınız şeydir. Ayrıca, bir Akışı benzer şekilde sarmalayan ve verileri geri almayı kolaylaştıran Yazarların Okuyucu muadilleri de vardır.
FileStream
özellikle dosyalara göre uyarlanmış bir akış türü olduğuna dikkat etmek önemlidir . Akışlar yerel olarak baytlarla çalışır, ancakStreamWriter
/ Reader yalnızca s değil , herhangi bir akışta metin yazar / okurFileStream
. Örneğin,MemoryStreams
,NetworkStreams
vb ..