source: trunk/Include/Classes/System/IO/StreamWriter.ab @ 470

Last change on this file since 470 was 470, checked in by OverTaker, 16 years ago

StreamWriterで2048バイト単位でしか書き込めないバグを修正。

File size: 1.8 KB
Line 
1Namespace System
2Namespace IO
3   
4   
5Class StreamWriter
6    Inherits TextWriter
7Public
8    /*
9    @date 2008/02/25
10    @auther Egtra
11    */
12    Sub StreamWriter(path As String)
13        init(New FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
14    End Sub
15
16    /*
17    @date 2008/02/25
18    @auther Egtra
19    */
20    Sub StreamWriter(stream As Stream)
21        init(stream)
22    End Sub
23
24    Override Sub Write(str As String)
25        buf.Append(str)
26        Dim len = buf.Length
27        If len >= 2048 Then
28            s.Write(StrPtr(buf) As *Byte, 0, len)
29            buf.Length = 0
30        End If
31    End Sub
32
33    Override Sub Write(x As Boolean)
34        buf.Append(x)
35    End Sub
36   
37    Override Sub Write(x As Char)
38        buf.Append(x)
39    End Sub
40
41    Override Sub Write(x As Byte)
42        buf.Append(x)
43    End Sub
44#ifdef UNICODE
45    Override Sub Write(x As SByte)
46        buf.Append(x)
47    End Sub
48#else
49    Override Sub Write(x As Word)
50        buf.Append(x)
51    End Sub
52#endif
53    Override Sub Write(x As Integer)
54        buf.Append(x)
55    End Sub
56
57    Override Sub Write(x As DWord)
58        buf.Append(x)
59    End Sub
60
61    Override Sub Write(x As Long)
62        buf.Append(x)
63    End Sub
64
65    Override Sub Write(x As QWord)
66        buf.Append(x)
67    End Sub
68
69    Override Sub Write(x As Int64)
70        buf.Append(x)
71    End Sub
72
73    Override Sub Write(x As Single)
74        buf.Append(x)
75    End Sub
76
77    Override Sub Write(x As Double)
78        buf.Append(x)
79    End Sub
80
81    Override Sub Write(x As Object)
82        Write(x.ToString)
83    End Sub
84
85Protected
86    Override Sub Dispose(disposing As Boolean)
87        If disposing Then
88            Dim len = buf.Length
89            If len > 0 Then
90                s.Write(StrPtr(buf) As *Byte, 0, len)
91            End If
92            s.Dispose()
93        End If
94    End Sub
95
96Private
97    Sub init(stream As Stream)
98        s = stream
99        buf = New System.Text.StringBuilder(4096)
100    End Sub
101
102    buf As Text.StringBuilder
103    s As System.IO.Stream
104End Class
105
106
107End Namespace
108End Namespace
Note: See TracBrowser for help on using the repository browser.