StringReader Class
Implements a TextReader that reads from a string.
For a list of all members of this type, see StringReader Members.
System.Object
System.MarshalByRefObject
System.IO.TextReader
System.IO.StringReader
[Visual Basic] <Serializable> Public Class StringReader Inherits TextReader [C#] [Serializable] public class StringReader : TextReader [C++] [Serializable] public __gc class StringReader : public TextReader [JScript] public Serializable class StringReader extends TextReader
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Remarks
The following table lists examples of other typical or related I/O tasks.
| To do this... | See the example in this topic... |
|---|---|
| Create a text file. | Writing Text to a File |
| Write to a text file. | Writing Text to a File |
| Read from a text file. | Reading Text from a File |
| Append text to a file. | Opening and Appending to a Log File |
| Get the size of a file. | FileInfo.Length |
| Get the attributes of a file. | File.GetAttributes |
| Set the attributes of a file. | File.SetAttributes |
| Determine if a file exists. | File.Exists |
| Read from a binary file. | Reading and Writing to a Newly Created Data File |
| Write to a binary file. | Reading and Writing to a Newly Created Data File |
Example
[Visual Basic, C#, C++] The following code example demonstrates the creation of a continuous paragraph from a group of double-spaced sentences, and then the conversion of the paragraph back to the original text.
[Visual Basic] Option Explicit Option Strict Imports Microsoft.VisualBasic Imports System Imports System.IO Public Class StrReader Shared Sub Main() Dim textReaderText As String = "TextReader is the " & _ "abstract base class of StreamReader and " & _ "StringReader, which read characters from streams " & _ "and strings, respectively." & _ vbCrLf & vbCrLf & _ "Create an instance of TextReader to open a text " & _ "file for reading a specified range of characters, " & _ "or to create a reader based on an existing stream." & _ vbCrLf & vbCrLf & _ "You can also use an instance of TextReader to read " & _ "text from a custom backing store using the same " & _ "APIs you would use for a string or a stream." & _ vbCrLf & vbCrLf Console.WriteLine("Original text:" & vbCrLf & vbCrLf & _ textReaderText) ' From textReaderText, create a continuous paragraph ' with two spaces between each sentence. Dim aLine, aParagraph As String Dim strReader As New StringReader(textReaderText) While True aLine = strReader.ReadLine() If aLine Is Nothing Then aParagraph = aParagraph & vbCrLf Exit While Else aParagraph = aParagraph & aLine & " " End If End While Console.WriteLine("Modified text:" & vbCrLf & vbCrLf & _ aParagraph) ' Re-create textReaderText from aParagraph. Dim intCharacter As Integer Dim convertedCharacter As Char Dim strWriter As New StringWriter() strReader = New StringReader(aParagraph) While True intCharacter = strReader.Read() ' Check for the end of the string ' before converting to a character. If intCharacter = -1 Then Exit While End If convertedCharacter = Convert.ToChar(intCharacter) If convertedCharacter = "."C Then strWriter.Write("." & vbCrLf & vbCrLf) ' Bypass the spaces between sentences. strReader.Read() strReader.Read() Else strWriter.Write(convertedCharacter) End If End While Console.WriteLine(vbCrLf & "Original text:" & vbCrLf & _ vbCrLf & strWriter.ToString()) End Sub End Class [C#] using System; using System.IO; class StringRW { static void Main() { string textReaderText = "TextReader is the abstract base " + "class of StreamReader and StringReader, which read " + "characters from streams and strings, respectively.\n\n" + "Create an instance of TextReader to open a text file " + "for reading a specified range of characters, or to " + "create a reader based on an existing stream.\n\n" + "You can also use an instance of TextReader to read " + "text from a custom backing store using the same " + "APIs you would use for a string or a stream.\n\n"; Console.WriteLine("Original text:\n\n{0}", textReaderText); // From textReaderText, create a continuous paragraph // with two spaces between each sentence. string aLine, aParagraph = null; StringReader strReader = new StringReader(textReaderText); while(true) { aLine = strReader.ReadLine(); if(aLine != null) { aParagraph = aParagraph + aLine + " "; } else { aParagraph = aParagraph + "\n"; break; } } Console.WriteLine("Modified text:\n\n{0}", aParagraph); // Re-create textReaderText from aParagraph. int intCharacter; char convertedCharacter; StringWriter strWriter = new StringWriter(); strReader = new StringReader(aParagraph); while(true) { intCharacter = strReader.Read(); // Check for the end of the string // before converting to a character. if(intCharacter == -1) break; convertedCharacter = Convert.ToChar(intCharacter); if(convertedCharacter == '.') { strWriter.Write(".\n\n"); // Bypass the spaces between sentences. strReader.Read(); strReader.Read(); } else { strWriter.Write(convertedCharacter); } } Console.WriteLine("\nOriginal text:\n\n{0}", strWriter.ToString()); } } [C++] #using <mscorlib.dll> using namespace System; using namespace System::IO; void main() { String* textReaderText = S"TextReader is the abstract base " S"class of StreamReader and StringReader, which read " S"characters from streams and strings, respectively.\n\n" S"Create an instance of TextReader to open a text file " S"for reading a specified range of characters, or to " S"create a reader based on an existing stream.\n\n" S"You can also use an instance of TextReader to read " S"text from a custom backing store using the same " S"APIs you would use for a string or a stream.\n\n"; Console::WriteLine("Original text:\n\n{0}", textReaderText); // From textReaderText, create a continuous paragraph // with two spaces between each sentence. String* aLine, * aParagraph; StringReader* strReader = new StringReader(textReaderText); while(true) { aLine = strReader->ReadLine(); if(aLine != 0) { aParagraph = String::Concat(aParagraph, aLine, " "); } else { aParagraph = String::Concat(aParagraph, "\n"); break; } } Console::WriteLine("Modified text:\n\n{0}", aParagraph); // Re-create textReaderText from aParagraph. int intCharacter; Char convertedCharacter; StringWriter* strWriter = new StringWriter(); strReader = new StringReader(aParagraph); while(true) { intCharacter = strReader->Read(); // Check for the end of the string // before converting to a character. if(intCharacter == -1) break; convertedCharacter = Convert::ToChar(intCharacter); if(convertedCharacter == '.') { strWriter->Write(".\n\n"); // Bypass the spaces between sentences. strReader->Read(); strReader->Read(); } else { strWriter->Write(convertedCharacter); } } Console::WriteLine("\nOriginal text:\n\n{0}", strWriter->ToString()); }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.IO
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
Assembly: Mscorlib (in Mscorlib.dll)
See Also
StringReader Members | System.IO Namespace | TextReader | StringWriter | Working with I/O | Reading Text from a File | Writing Text to a File