2 // System.IO.StreamWriter.cs
\r
5 // Dietmar Maurer (dietmar@ximian.com)
\r
7 // (C) Ximian, Inc. http://www.ximian.com
\r
12 namespace System.IO {
\r
15 public class StreamWriter : TextWriter {
\r
17 private Encoding internalEncoding;
\r
19 private Stream internalStream;
\r
21 private bool iflush;
\r
23 // new public static readonly StreamWriter Null;
\r
25 public StreamWriter (Stream stream)
\r
26 : this (stream, null, 0) {}
\r
28 public StreamWriter (Stream stream, Encoding encoding)
\r
29 : this (stream, encoding, 0) {}
\r
31 public StreamWriter (Stream stream, Encoding encoding, int bufferSize)
\r
33 internalStream = stream;
\r
35 if (encoding == null)
\r
36 internalEncoding = Encoding.UTF8;
\r
38 internalEncoding = encoding;
\r
41 public StreamWriter (string path)
\r
42 : this (path, false, null, 0) {}
\r
44 public StreamWriter (string path, bool append)
\r
45 : this (path, append, null, 0) {}
\r
47 public StreamWriter (string path, bool append, Encoding encoding)
\r
48 : this (path, append, encoding, 0) {}
\r
50 public StreamWriter (string path, bool append, Encoding encoding, int bufferSize)
\r
55 mode = FileMode.Append;
\r
57 mode = FileMode.Create;
\r
59 internalStream = new FileStream (path, mode, FileAccess.Write);
\r
62 internalStream.Position = internalStream.Length;
\r
64 internalStream.SetLength (0);
\r
66 if (encoding == null)
\r
67 internalEncoding = Encoding.UTF8;
\r
69 internalEncoding = encoding;
\r
73 public virtual bool AutoFlush
\r
85 public virtual Stream BaseStream
\r
88 return internalStream;
\r
92 public override Encoding Encoding
\r
95 return internalEncoding;
\r
99 protected override void Dispose (bool disposing)
\r
101 if (disposing && internalStream != null) {
\r
102 internalStream.Close ();
\r
103 internalStream = null;
\r
107 public override void Flush ()
\r
109 internalStream.Flush ();
\r
112 public override void Write (char[] buffer, int index, int count)
\r
114 byte[] res = new byte [internalEncoding.GetMaxByteCount (buffer.Length)];
\r
117 len = internalEncoding.GetBytes (buffer, index, count, res, 0);
\r
119 internalStream.Write (res, 0, len);
\r
126 public override void Write(string value)
\r
128 Write (value.ToCharArray (), 0, value.Length);
\r