Câu hỏi:
Sự khác biệt giữa FileStream
và StreamWriter
trong .Net là gì?
Bạn phải sử dụng nó trong ngữ cảnh nào? Ưu điểm và nhược điểm của họ là gì?
Có thể kết hợp hai điều này thành một không?
Câu hỏi:
Sự khác biệt giữa FileStream
và StreamWriter
trong .Net là gì?
Bạn phải sử dụng nó trong ngữ cảnh nào? Ưu điểm và nhược điểm của họ là gì?
Có thể kết hợp hai điều này thành một không?
Câu trả lời:
Sự khác biệt giữa FileStream và StreamWriter trong dotnet là gì?
A FileStream
là a Stream
. Giống như tất cả các Luồng, nó chỉ xử lý byte[]
dữ liệu.
A StreamWriter : TextWriter
, là một Stream-decorator. TextWriter mã hóa dữ liệu Văn bản như chuỗi hoặc ký tự byte[]
và sau đó ghi nó vào liên kết Stream
.
Bạn phải sử dụng nó trong ngữ cảnh nào? Ưu điểm và nhược điểm của họ là gì?
Bạn sử dụng một FileStream trống khi bạn có byte[]
dữ liệu. Bạn thêm một StreamWriter
khi bạn muốn viết văn bản. Sử dụng Bộ định dạng hoặc Bộ nối tiếp để ghi dữ liệu phức tạp hơn.
Có thể kết hợp hai điều này thành một không?
Đúng. Bạn luôn cần một Stream để tạo StreamWriter. Phương thức trợ giúp System.IO.File.CreateText("path")
sẽ tạo chúng kết hợp với nhau và sau đó bạn chỉ phải Loại bỏ () trình ghi bên ngoài.
FileStream ghi byte, StreamWriter ghi văn bản. Đó là tất cả.
FileStream được dành riêng cho các tệp đang hoạt động.
Một StreamWriter có thể được sử dụng để phát trực tuyến đến bất kỳ loại Luồng nào - ổ cắm mạng, tệp, v.v.
ScottGu giải thích các đối tượng Stream khác nhau khá độc đáo tại đây: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
Vâng, từ MSDN cho FileStream
:
Hiển thị Luồng xung quanh tệp, hỗ trợ cả hoạt động đọc và ghi đồng bộ và không đồng bộ.
và MSDN cho StreamWriter
:
Triển khai TextWriter để ghi các ký tự vào một luồng trong một bảng mã cụ thể.
Sự khác biệt rõ ràng nhất là FileStream
cho phép thao tác đọc / ghi, trong khi StreamWriter
chỉ ghi.
Các StreamWriter
trang tiếp tục add:
StreamWriter được thiết kế cho đầu ra ký tự trong một mã hóa cụ thể, trong khi các lớp bắt nguồn từ Stream được thiết kế cho đầu vào và đầu ra byte.
Vì vậy, sự khác biệt thứ hai là FileStream
byte, trong khi StreamWriter
là văn bản.
Chúng là hai cấp độ khác nhau được sử dụng để xuất thông tin tới các nguồn dữ liệu đã biết.
A FileStream
là một loại Luồng, về mặt khái niệm là một cơ chế trỏ đến một số vị trí và có thể xử lý dữ liệu đến và / hoặc đi đến và đi từ vị trí đó. Các luồng tồn tại để đọc / ghi vào tệp, kết nối mạng, bộ nhớ, đường dẫn, bảng điều khiển, trình nghe gỡ lỗi và theo dõi, và một số loại nguồn dữ liệu khác. Cụ thể, một FileStream
tồn tại để thực hiện đọc và ghi vào hệ thống tệp. Hầu hết các luồng có mức sử dụng khá thấp và xử lý dữ liệu dưới dạng byte.
A StreamWriter
là một trình bao bọc cho Luồng giúp đơn giản hóa việc sử dụng luồng đó để xuất văn bản thuần túy. Nó hiển thị các phương thức lấy chuỗi thay vì byte và thực hiện các chuyển đổi cần thiết đến và đi từ mảng byte. Có những nhà văn khác; cái chính khác mà bạn sẽ sử dụng là XmlTextWriter
, hỗ trợ việc ghi dữ liệu ở định dạng XML . Ngoài ra còn có các đối tác Reader với Writers tương tự như vậy bao bọc một Luồng và tạo điều kiện lấy lại dữ liệu.
FileStream
là một loại luồng, được điều chỉnh cụ thể cho các tệp. Luồng nguyên bản hoạt động với byte, tuy nhiênStreamWriter
/ Reader sẽ viết / đọc văn bản trên bất kỳ luồng nào , không chỉFileStream
s. Ví dụ,MemoryStreams
,NetworkStreams
, vv ..