StringWriter.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //
  2. // System.IO.StringWriter
  3. //
  4. // Author: Marcin Szczepanski ([email protected])
  5. //
  6. using System.Text;
  7. namespace System.IO {
  8. [Serializable]
  9. public class StringWriter : TextWriter {
  10. private StringBuilder internalString;
  11. public StringWriter() {
  12. internalString = new StringBuilder();
  13. }
  14. public StringWriter( IFormatProvider formatProvider ) {
  15. internalFormatProvider = formatProvider;
  16. }
  17. public StringWriter( StringBuilder sb ) {
  18. internalString = sb;
  19. }
  20. public StringWriter( StringBuilder sb, IFormatProvider formatProvider ) {
  21. internalString = sb;
  22. internalFormatProvider = formatProvider;
  23. }
  24. public override System.Text.Encoding Encoding {
  25. get {
  26. return System.Text.Encoding.Unicode;
  27. }
  28. }
  29. public override void Close() {
  30. Dispose( true );
  31. }
  32. protected override void Dispose (bool disposing)
  33. {
  34. internalString = null;
  35. base.Dispose (disposing);
  36. }
  37. public virtual StringBuilder GetStringBuilder() {
  38. return internalString;
  39. }
  40. public override string ToString() {
  41. return internalString.ToString();
  42. }
  43. public override void Write( char value ) {
  44. internalString.Append( value );
  45. }
  46. public override void Write( string value ) {
  47. internalString.Append( value );
  48. }
  49. public override void Write( char[] buffer, int index, int count ) {
  50. if( buffer == null ) {
  51. throw new ArgumentNullException();
  52. } else if( index < 0 || count < 0 ) {
  53. throw new ArgumentOutOfRangeException();
  54. } else if( index > buffer.Length || index + count > buffer.Length ) {
  55. throw new ArgumentException();
  56. }
  57. char[] writeBuffer = new char[ count ];
  58. Array.Copy( buffer, index, writeBuffer, 0, count );
  59. internalString.Append( writeBuffer );
  60. }
  61. }
  62. }