FileStream vs / различия StreamWriter?
вопрос:
чем отличается FileStream и StreamWriter в dotnet?
в каком контексте вы должны его использовать? В чем их преимущество и недостаток?
можно ли объединить эти два в один?
6 ответов:
чем отличается FileStream и StreamWriter в dotnet?
A
FileStream
ЭтоStream
. Как и все потоки он имеет дело только сbyte[]
данные.A
StreamWriter : TextWriter
, является поток-декоратор. TextWriter кодирует текстовые данные, такие как string или char tobyte[]
и затем записывает его в СоединенныйStream
.в каком контексте вы должны его использовать? В чем их преимущество и недостаток?
вы используете голый поток файлов, когда у вас есть
byte[]
данные. Вы добавляетеStreamWriter
если вы хотите написать текст. Используйте форматер или сериализатор для записи более сложных данных.можно ли объединить эти два в один?
да. Вам всегда нужен поток для создания StreamWriter. Вспомогательный метод
System.IO.File.CreateText("path")
будет создавать их в комбинации, а затем вам нужно только утилизировать() внешний писатель.
поток файлов явно предназначен для работы с файлами.
StreamWriter может использоваться для потоковой передачи на любой тип поток - сетевые сокеты, файлы и т. д.
ScottGu объясняет различные объекты потока довольно хорошо здесь:http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
ну, от MSDN для
FileStream
:предоставляет Stream в файл, поддерживающий синхронные и асинхронные операции чтения и записи.
и MSDN для
StreamWriter
:реализует textwriter для записи символов в поток в определенной кодировке.
самая очевидная разница в том, что
FileStream
позволяет осуществлять операции чтения/записи, в то время какStreamWriter
это только писать.The
StreamWriter
страница продолжает добавлять:StreamWriter предназначен для вывода символов в определенной кодировке, в то время как классы, производные от Stream, предназначены для ввода и вывода байтов.
так что второе отличие в том, что
FileStream
Это для байтов, в то время какStreamWriter
для текста.
Это два разных уровня, используемых при выводе информации в известные источники данных.
FileStream-это тип потока, который концептуально является механизмом, который указывает на некоторое местоположение и может обрабатывать входящие и/или исходящие данные В и из этого местоположения. Потоки существуют для чтения/записи в файлы, сетевых подключений, памяти, каналов, консоли, прослушивателей отладки и трассировки и нескольких других типов источников данных. В частности, существует поток файлов для выполнения операций чтения и запись в файловую систему. Большинство потоков являются довольно низкоуровневыми в их использовании и имеют дело с данными в виде байтов.
StreamWriter-это оболочка для потока, которая упрощает использование этого потока для вывода обычного текста. Он предоставляет методы, которые принимают строки вместо байтов, и выполняет необходимые преобразования в и из байтовых массивов. Есть и другие писатели; другой основной, который вы бы использовали, - это XmlTextWriter, который облегчает запись данных в формате XML. Есть также читательские аналоги авторы, которые аналогично обертывают поток и облегчают получение данных обратно.