Вопрос:
В чем разница между FileStream
и StreamWriter
в .Net ?
В каком контексте вы должны это использовать? В чем их преимущество и недостаток?
Можно ли объединить эти два в одно?
источник
Вопрос:
В чем разница между FileStream
и StreamWriter
в .Net ?
В каком контексте вы должны это использовать? В чем их преимущество и недостаток?
Можно ли объединить эти два в одно?
В чем разница между FileStream и StreamWriter в dotnet?
А FileStream
- это Stream
. Как и все потоки, он работает только с byte[]
данными.
A StreamWriter : TextWriter
, это Stream-декоратор. TextWriter кодирует текстовые данные, такие как строка или символ, byte[]
а затем записывает их в связанный Stream
.
В каком контексте вы должны это использовать? В чем их преимущество и недостаток?
Когда у вас есть byte[]
данные, вы используете чистый FileStream . Вы добавляете, StreamWriter
когда хотите написать текст. Используйте Formatter или Serializer для записи более сложных данных.
Можно ли объединить эти два в одно?
Да. Для создания StreamWriter всегда нужен Stream. Вспомогательный метод System.IO.File.CreateText("path")
создаст их в комбинации, и тогда вам останется только Dispose () внешнего писателя.
FileStream
это тип потока, который специально предназначен для файлов. Потоки изначально работают с байтами, однакоStreamWriter
/ Reader будет писать / читать текст в любом потоке, а не только вFileStream
s. Так , например,MemoryStreams
,NetworkStreams
и т.д ..FileStream записывает байты, StreamWriter записывает текст. Вот и все.
источник
FileStream явно предназначен для рабочих файлов.
StreamWriter можно использовать для потоковой передачи в любой тип Stream - сетевые сокеты, файлы и т. Д.
ScottGu довольно хорошо объясняет различные объекты Stream здесь: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
источник
Ну, из MSDN для
FileStream
:и MSDN для
StreamWriter
:Наиболее очевидное отличие состоит в том, что
FileStream
разрешены операции чтения / записи, тогдаStreamWriter
как только запись.На
StreamWriter
странице добавляются:Второе отличие -
FileStream
для байтов, аStreamWriter
для текста.источник
Это два разных уровня, используемых при выводе информации в известные источники данных.
A
FileStream
- это тип Stream, который концептуально представляет собой механизм, который указывает на какое-то место и может обрабатывать входящие и / или исходящие данные в это место и из него. Существуют потоки для чтения / записи в файлы, сетевые подключения, память, каналы, консоль, прослушиватели отладки и трассировки и несколько других типов источников данных. В частности,FileStream
существует для выполнения чтения и записи в файловую систему. Большинство потоков довольно низкоуровневые в использовании и обрабатывают данные как байты.A
StreamWriter
- это оболочка для Stream, которая упрощает использование этого потока для вывода простого текста. Он предоставляет методы, которые принимают строки вместо байтов, и выполняет необходимые преобразования в массивы байтов и обратно. Есть и другие писатели; другой основной вариантXmlTextWriter
, который вы бы использовали, - это упрощающий запись данных в формате XML . Существуют также аналоги Reader для Writers, которые аналогичным образом обертывают поток и облегчают получение данных обратно.источник
Одним из ключевых отличий (в дополнение к приведенным выше комментариям) может быть то, что FileStream поддерживает произвольное чтение и запись доступа к диску в любой указанный FileStream.Position. Для больших модификаций файлов это может быть бесценным.
источник