คำถาม:
อะไรคือความแตกต่างระหว่างFileStream
และStreamWriter
ใน. Net ?
คุณควรใช้บริบทใด ข้อดีและข้อเสียของพวกเขาคืออะไร?
เป็นไปได้หรือไม่ที่จะรวมสองสิ่งนี้เข้าด้วยกัน
คำถาม:
อะไรคือความแตกต่างระหว่างFileStream
และStreamWriter
ใน. Net ?
คุณควรใช้บริบทใด ข้อดีและข้อเสียของพวกเขาคืออะไร?
เป็นไปได้หรือไม่ที่จะรวมสองสิ่งนี้เข้าด้วยกัน
คำตอบ:
FileStream และ StreamWriter ใน dotnet ต่างกันอย่างไร
เป็นFileStream
Stream
เช่นเดียวกับสตรีมทั้งหมดที่เกี่ยวข้องกับbyte[]
ข้อมูลเท่านั้น
A StreamWriter : TextWriter
เป็นมัณฑนากรสตรีม TextWriter เข้ารหัสข้อมูลของข้อความเช่นสตริงหรือถ่านไปแล้วเขียนมันไปเชื่อมโยงbyte[]
Stream
คุณควรใช้บริบทใด ข้อดีและข้อเสียของพวกเขาคืออะไร?
คุณใช้ FileStream เปล่าเมื่อคุณมีbyte[]
ข้อมูล คุณเพิ่มStreamWriter
เมื่อคุณต้องการเขียนข้อความ ใช้ Formatter หรือ Serializer เพื่อเขียนข้อมูลที่ซับซ้อนมากขึ้น
เป็นไปได้หรือไม่ที่จะรวมสองสิ่งนี้เข้าด้วยกัน
ใช่. คุณต้องมี Stream เสมอเพื่อสร้าง StreamWriter วิธีการช่วยเหลือSystem.IO.File.CreateText("path")
จะสร้างมันขึ้นมารวมกันจากนั้นคุณจะต้อง Dispose () ตัวเขียนด้านนอกเท่านั้น
FileStream เขียนไบต์ StreamWriter เขียนข้อความ นั่นคือทั้งหมด
FileStream มีไว้สำหรับไฟล์ที่ใช้งานได้อย่างชัดเจน
StreamWriter สามารถใช้เพื่อสตรีมไปยังStreamประเภทใดก็ได้เช่นซ็อกเก็ตเครือข่ายไฟล์และอื่น ๆ
ScottGu อธิบายถึงวัตถุสตรีมต่างๆได้ดีที่นี่: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
จาก MSDN สำหรับFileStream
:
แสดงสตรีมรอบ ๆ ไฟล์ซึ่งสนับสนุนทั้งการอ่านและเขียนแบบซิงโครนัสและอะซิงโครนัส
และ MSDN สำหรับStreamWriter
:
ใช้ TextWriter สำหรับเขียนอักขระไปยังสตรีมในการเข้ารหัสเฉพาะ
ข้อแตกต่างที่ชัดเจนที่สุดคือFileStream
อนุญาตให้อ่าน / เขียนได้ในขณะที่StreamWriter
เขียนเท่านั้น
StreamWriter
หน้าต่อไปเพิ่ม:
StreamWriter ได้รับการออกแบบมาสำหรับเอาต์พุตอักขระในการเข้ารหัสเฉพาะในขณะที่คลาสที่ได้รับจาก Stream ได้รับการออกแบบสำหรับอินพุตและเอาต์พุตแบบไบต์
ความแตกต่างประการที่สองFileStream
คือสำหรับไบต์ในขณะที่StreamWriter
เป็นข้อความ
เป็นสองระดับที่แตกต่างกันที่ใช้ในการส่งออกข้อมูลไปยังแหล่งข้อมูลที่รู้จัก
A FileStream
เป็นสตรีมประเภทหนึ่งซึ่งเป็นกลไกเชิงแนวคิดที่ชี้ไปยังตำแหน่งที่ตั้งบางแห่งและสามารถจัดการข้อมูลขาเข้าและ / หรือขาออกไปและกลับจากตำแหน่งนั้นได้ สตรีมมีไว้สำหรับการอ่าน / เขียนไปยังไฟล์การเชื่อมต่อเครือข่ายหน่วยความจำไพพ์คอนโซลการดีบักและติดตามผู้ฟังและแหล่งข้อมูลประเภทอื่น ๆ โดยเฉพาะอย่างยิ่งมีFileStream
อยู่เพื่อดำเนินการอ่านและเขียนไปยังระบบไฟล์ สตรีมส่วนใหญ่มีการใช้งานค่อนข้างต่ำและจัดการกับข้อมูลเป็นไบต์
A StreamWriter
คือ Wrapper สำหรับ Stream ที่ช่วยลดความยุ่งยากในการใช้สตรีมนั้นเพื่อส่งออกข้อความธรรมดา มันแสดงวิธีการที่ใช้สตริงแทนไบต์และทำการแปลงที่จำเป็นไปยังและจากอาร์เรย์ไบต์ มีนักเขียนคนอื่น ๆ หลักอื่น ๆ ที่คุณใช้คือXmlTextWriter
ซึ่งอำนวยความสะดวกในการเขียนข้อมูลในรูปแบบXML นอกจากนี้ยังมีตัวอ่านคู่กับนักเขียนที่ห่อสตรีมและอำนวยความสะดวกในการดึงข้อมูลกลับ
ความแตกต่างที่สำคัญอย่างหนึ่ง (นอกเหนือจากความคิดเห็นด้านบน) อาจเป็นได้ว่า FileStream สนับสนุนการเข้าถึงดิสก์แบบสุ่มอ่านและเขียนไปยัง FileStream.Position ที่ระบุ สำหรับการปรับเปลี่ยนไฟล์ขนาดใหญ่นั้นสามารถประเมินค่าได้
FileStream
คือสตรีมประเภทหนึ่งซึ่งปรับแต่งให้เหมาะกับไฟล์โดยเฉพาะ สตรีมทำงานกับไบต์โดยกำเนิดอย่างไรก็ตามStreamWriter
/ Reader จะเขียน / อ่านข้อความในสตรีมใด ๆไม่ใช่แค่FileStream
s ตัวอย่างเช่นMemoryStreams
,NetworkStreams
ฯลฯ ..