Поделиться через


StringWriter Класс

Определение

Реализует TextWriter для записи сведений в строку. Сведения хранятся в базовой StringBuilder.

public ref class StringWriter : System::IO::TextWriter
public class StringWriter : System.IO.TextWriter
[System.Serializable]
public class StringWriter : System.IO.TextWriter
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class StringWriter : System.IO.TextWriter
type StringWriter = class
    inherit TextWriter
[<System.Serializable>]
type StringWriter = class
    inherit TextWriter
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type StringWriter = class
    inherit TextWriter
Public Class StringWriter
Inherits TextWriter
Наследование
StringWriter
Наследование
Атрибуты

Примеры

В следующем примере кода показано создание непрерывного абзаца из группы двойных предложений, а затем преобразование абзаца обратно в исходный текст.

using namespace System;
using namespace System::IO;
int 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;
   String^ aParagraph;
   StringReader^ strReader = gcnew StringReader( textReaderText );
   while ( true )
   {
      aLine = strReader->ReadLine();
      if ( aLine != nullptr )
      {
         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 = gcnew StringWriter;
   strReader = gcnew 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() );
}
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 = (char)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());
    }
}
Option Explicit
Option Strict

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

Комментарии

StringWriter позволяет записывать в строку синхронно или асинхронно. Символ можно написать одновременно с помощью Write(Char) или метода WriteAsync(Char), строки за раз с помощью Write(String) или метода WriteAsync(String). Кроме того, можно написать символ, массив символов или строку, за которой следует терминатор строки асинхронно с одним из методов WriteLineAsync.

Заметка

Этот тип реализует интерфейс IDisposable, но на самом деле не имеет ресурсов для удаления. Это означает, что удаление его путем прямого вызова Dispose() или с помощью конструкции языка, например using (в C#) или Using (в Visual Basic) не требуется.

В следующей таблице перечислены примеры других типичных или связанных задач ввода-вывода.

Для этого... См. пример в этом разделе...
Создайте текстовый файл. Практическое руководство. Запись текста в файл
Запись в текстовый файл. Практическое руководство. Запись текста в файл
Чтение из текстового файла. Практическое руководство. Чтение текста из файла
Добавление текста в файл. Практическое руководство. Открытие и добавление в файл журнала

File.AppendText

FileInfo.AppendText
Получение размера файла. FileInfo.Length
Получение атрибутов файла. File.GetAttributes
Задайте атрибуты файла. File.SetAttributes
Определите, существует ли файл. File.Exists
Чтение из двоичного файла. практическое руководство. Чтение и запись в только что созданный файл данных
Запись в двоичный файл. практическое руководство. Чтение и запись в только что созданный файл данных

Конструкторы

StringWriter()

Инициализирует новый экземпляр класса StringWriter.

StringWriter(IFormatProvider)

Инициализирует новый экземпляр класса StringWriter с указанным элементом управления форматированием.

StringWriter(StringBuilder)

Инициализирует новый экземпляр класса StringWriter, записываемого в указанный StringBuilder.

StringWriter(StringBuilder, IFormatProvider)

Инициализирует новый экземпляр класса StringWriter, который записывает в указанный StringBuilder и имеет указанный поставщик формата.

Поля

CoreNewLine

Сохраняет новые символы, используемые для этого TextWriter.

(Унаследовано от TextWriter)

Свойства

Encoding

Получает Encoding, в которой записываются выходные данные.

FormatProvider

Возвращает объект, который управляет форматированием.

(Унаследовано от TextWriter)
NewLine

Возвращает или задает строку конца строки, используемую текущим TextWriter.

(Унаследовано от TextWriter)

Методы

Close()

Закрывает текущий StringWriter и базовый поток.

Close()

Закрывает текущий модуль записи и освобождает все системные ресурсы, связанные с средством записи.

(Унаследовано от TextWriter)
CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, используемые объектом TextWriter.

(Унаследовано от TextWriter)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые StringWriter, и при необходимости освобождает управляемые ресурсы.

DisposeAsync()

Асинхронно освобождает все ресурсы, используемые объектом TextWriter.

(Унаследовано от TextWriter)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Flush()

Очищает все буферы для текущего модуля записи и приводит к записи буферных данных на базовое устройство.

(Унаследовано от TextWriter)
FlushAsync()

Асинхронно очищает все буферы для текущего модуля записи и приводит к записи буферных данных на базовое устройство.

FlushAsync()

Асинхронно очищает все буферы для текущего модуля записи и приводит к записи буферных данных на базовое устройство.

(Унаследовано от TextWriter)
FlushAsync(CancellationToken)

Асинхронно очищает все буферы для текущего модуля записи и приводит к записи буферных данных на базовое устройство.

(Унаследовано от TextWriter)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetStringBuilder()

Возвращает базовый StringBuilder.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего объекта MarshalByRefObject.

(Унаследовано от MarshalByRefObject)
ToString()

Возвращает строку, содержащую символы, записанные в текущую StringWriter до сих пор.

Write(Boolean)

Записывает текстовое представление значения Boolean в текстовый поток.

(Унаследовано от TextWriter)
Write(Char)

Записывает символ в строку.

Write(Char[])

Записывает массив символов в текстовый поток.

(Унаследовано от TextWriter)
Write(Char[], Int32, Int32)

Записывает вложенные символы в строку.

Write(Decimal)

Записывает текстовое представление десятичного значения в текстовый поток.

(Унаследовано от TextWriter)
Write(Double)

Записывает текстовое представление 8-байтового значения с плавающей запятой в текстовый поток.

(Унаследовано от TextWriter)
Write(Int32)

Записывает текстовое представление 4-байтового целого числа со знаком в текстовый поток.

(Унаследовано от TextWriter)
Write(Int64)

Записывает текстовое представление 8-байтового целого числа со знаком в текстовый поток.

(Унаследовано от TextWriter)
Write(Object)

Записывает текстовое представление объекта в текстовый поток, вызвав метод ToString для этого объекта.

(Унаследовано от TextWriter)
Write(ReadOnlySpan<Char>)

Записывает строковое представление диапазона символов в текущую строку.

Write(ReadOnlySpan<Char>)

Записывает диапазон символов в текстовый поток.

(Унаследовано от TextWriter)
Write(Single)

Записывает текстовое представление 4-байтового значения с плавающей запятой в текстовый поток.

(Унаследовано от TextWriter)
Write(String)

Записывает строку в текущую строку.

Write(String, Object)

Записывает форматированную строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object).

(Унаследовано от TextWriter)
Write(String, Object, Object)

Записывает форматированную строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object, Object).

(Унаследовано от TextWriter)
Write(String, Object, Object, Object)

Записывает форматированную строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object, Object, Object).

(Унаследовано от TextWriter)
Write(String, Object[])

Записывает форматированную строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object[]).

(Унаследовано от TextWriter)
Write(String, ReadOnlySpan<Object>)

Записывает форматированную строку в текстовый поток, используя ту же семантику, что и Format(String, ReadOnlySpan<Object>).

(Унаследовано от TextWriter)
Write(StringBuilder)

Записывает строковое представление построителя строк в текущую строку.

Write(StringBuilder)

Записывает построитель строк в текстовый поток.

(Унаследовано от TextWriter)
Write(UInt32)

Записывает текстовое представление 4-байтового целого числа без знака в текстовый поток.

(Унаследовано от TextWriter)
Write(UInt64)

Записывает текстовое представление 8-байтового целого числа без знака в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(Char)

Записывает символ в строку асинхронно.

WriteAsync(Char)

Записывает символ в текстовый поток асинхронно.

(Унаследовано от TextWriter)
WriteAsync(Char[])

Записывает массив символов в текстовый поток асинхронно.

(Унаследовано от TextWriter)
WriteAsync(Char[], Int32, Int32)

Записывает вложенные символы в строку асинхронно.

WriteAsync(Char[], Int32, Int32)

Записывает вложенные символы в текстовый поток асинхронно.

(Унаследовано от TextWriter)
WriteAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает область памяти символов в строку.

WriteAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает область памяти символов в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(String)

Записывает строку в текущую строку асинхронно.

WriteAsync(String)

Записывает строку в текстовый поток асинхронно.

(Унаследовано от TextWriter)
WriteAsync(StringBuilder, CancellationToken)

Асинхронно записывает текстовое представление построителя строк в строку.

WriteAsync(StringBuilder, CancellationToken)

Асинхронно записывает построитель строк в текстовый поток.

(Унаследовано от TextWriter)
WriteLine()

Записывает конца строки в текстовый поток.

(Унаследовано от TextWriter)
WriteLine(Boolean)

Записывает текстовое представление значения Boolean в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Char)

Записывает символ в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Char[])

Записывает массив символов в текстовый поток, за которым следует константатор строки.

(Унаследовано от TextWriter)
WriteLine(Char[], Int32, Int32)

Записывает вложенные символы в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Decimal)

Записывает текстовое представление десятичного значения в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Double)

Записывает текстовое представление 8-байтового значения с плавающей запятой в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Int32)

Записывает текстовое представление 4-байтового целого числа со знаком в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Int64)

Записывает текстовое представление целого числа со знаком 8 байтов в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Object)

Записывает текстовое представление объекта в текстовый поток, вызывая метод ToString для этого объекта, а затем конца строки.

(Унаследовано от TextWriter)
WriteLine(ReadOnlySpan<Char>)

Записывает текстовое представление диапазона символов в строку, за которым следует терминатор строки.

WriteLine(ReadOnlySpan<Char>)

Записывает текстовое представление диапазона символов в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(Single)

Записывает текстовое представление 4-байтового значения с плавающей запятой в текстовый поток, а затем конца строки.

(Унаследовано от TextWriter)
WriteLine(String)

Записывает строку в текстовый поток, за которой следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(String, Object)

Записывает форматированную строку и новую строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object).

(Унаследовано от TextWriter)
WriteLine(String, Object, Object)

Записывает форматированную строку и новую строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object, Object).

(Унаследовано от TextWriter)
WriteLine(String, Object, Object, Object)

Записывает форматированную строку и новую строку в текстовый поток, используя ту же семантику, что и Format(String, Object).

(Унаследовано от TextWriter)
WriteLine(String, Object[])

Записывает форматированную строку и новую строку в текстовый поток, используя ту же семантику, что и Format(String, Object).

(Унаследовано от TextWriter)
WriteLine(String, ReadOnlySpan<Object>)

Записывает форматированную строку и новую строку в текстовый поток, используя ту же семантику, что и Format(String, ReadOnlySpan<Object>).

(Унаследовано от TextWriter)
WriteLine(StringBuilder)

Записывает текстовое представление построителя строк в строку, за которым следует терминатор строки.

WriteLine(StringBuilder)

Записывает текстовое представление построителя строк в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(UInt32)

Записывает текстовое представление 4-байтового целого числа без знака в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLine(UInt64)

Записывает текстовое представление 8-байтового целого числа без знака в текстовый поток, а затем конца строки.

(Унаследовано от TextWriter)
WriteLineAsync()

Асинхронно записывает конца строки в текстовый поток.

(Унаследовано от TextWriter)
WriteLineAsync(Char)

Асинхронно записывает символ в строку, за которой следует терминатор строки.

WriteLineAsync(Char)

Асинхронно записывает символ в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLineAsync(Char[])

Асинхронно записывает массив символов в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLineAsync(Char[], Int32, Int32)

асинхронно записывает вложенные символы в строку, а затем конца строки.

WriteLineAsync(Char[], Int32, Int32)

Асинхронно записывает вложенные символы в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLineAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает строковое представление области памяти символов в текущую строку, за которой следует терминатор строки.

WriteLineAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает текстовое представление области памяти символов в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLineAsync(String)

Асинхронно записывает строку в текущую строку, за которой следует терминатор строки.

WriteLineAsync(String)

Асинхронно записывает строку в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)
WriteLineAsync(StringBuilder, CancellationToken)

Асинхронно записывает строковое представление построителя строк в текущую строку, за которой следует терминатор строки.

WriteLineAsync(StringBuilder, CancellationToken)

Асинхронно записывает текстовое представление построителя строк в текстовый поток, за которым следует терминатор строки.

(Унаследовано от TextWriter)

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого элемента см. в разделе Dispose().

(Унаследовано от TextWriter)

Методы расширения

ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

Применяется к

См. также раздел