📄 tij314.htm
字号:
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FileInputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FileReader</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FileOutputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FileWriter</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>StringBufferInputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>StringReader</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table">(no corresponding class)<br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>StringWriter</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>ByteArrayInputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>CharArrayReader</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>ByteArrayOutputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>CharArrayWriter</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PipedInputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PipedReader</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PipedOutputStream</b><br></p>
</td>
<td width="239.999940" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PipedWriter</b><br></p>
</td>
</tr>
</table></div>
<p class="TableFollower">In general, you’ll find that the interfaces for the two different hierarchies are similar if not identical.<br></p>
<h3>
<a name="_Toc24775795"></a><a name="Heading14251"></a>Modifying stream
behavior</h3>
<p>For <b>InputStream</b>s and <b>OutputStream</b>s, streams were adapted for particular needs using “decorator” subclasses of <b>FilterInputStream</b> and <b>FilterOutputStream.</b> The <b>Reader</b> and <b>Writer</b> class hierarchies continue the use of this idea—but not exactly. <font size="-2"><a href="mailto:TIJ3@MindView.net?Subject=[TIJ3]Chap11_1663" title="Send BackTalk Comment">Feedback</a></font><br></p>
<p>In the following table, the correspondence is a rougher approximation than in the previous table. The difference is because of the class organization; although <b>BufferedOutputStream</b> is a subclass of <b>FilterOutputStream</b>, <b>BufferedWriter</b> is <i>not</i> a subclass of <b>FilterWriter</b> (which, even though it is <b>abstract</b>, has no subclasses and so appears to have been put in either as a placeholder or simply so you wouldn’t wonder where it was). However, the interfaces to the classes are quite a close match. <br></p>
<div align="center" style="position:relative; left: 0"><table border="1">
<tr valign="top">
<th width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><a name="Index1285"></a><a name="Index1286"></a><a name="Index1287"></a><a name="Index1288"></a><a name="Index1289"></a><a name="Index1290"></a><a name="Index1291"></a><a name="Index1292"></a><a name="Index1293"></a><a name="Index1294"></a><a name="Index1295"></a><a name="Index1296"></a><a name="Index1297"></a><a name="Index1298"></a><a name="Index1299"></a><a name="Index1300"></a><a name="Index1301"></a><a name="Index1302"></a><a name="Index1303"></a><a name="Index1304"></a><b>Filters:</b><br><b>Java 1.0 class</b><br></p>
</th>
<th width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>Corresponding Java 1.1 class</b><br></p>
</th>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FilterInputStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FilterReader</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FilterOutputStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>FilterWriter </b>(abstract class with no subclasses)<br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>BufferedInputStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>BufferedReader</b><br>(also has<b> readLine( )</b>)<br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>BufferedOutputStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>BufferedWriter</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>DataInputStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table">Use<b> DataInputStream</b><br>(except when you need to use<b> readLine( )</b>,<b> </b>when you should use a<b> BufferedReader</b>)<br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PrintStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PrintWriter</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>LineNumberInputStream</b><br>(deprecated)<br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>LineNumberReader</b><br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>StreamTokenizer</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>StreamTokenizer</b><br>(use constructor that takes a <b>Reader</b> instead)<br></p>
</td>
</tr>
<tr valign="top">
<td width="215.999946" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PushBackInputStream</b><br></p>
</td>
<td width="251.999937" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>PushBackReader</b><br></p>
</td>
</tr>
</table></div>
<p class="TableFollower">There’s one direction that’s quite clear: Whenever you want to use <b>readLine( )</b>, you shouldn’t do it with a <b>DataInputStream</b> (this is met with a deprecation message at compile time), but instead use a <b>BufferedReader</b>. Other than this, <b>DataInputStream</b> is still a “preferred” member of the I/O library.<br></p>
<p>To make the transition to using a <b>PrintWriter</b> easier, it has constructors that take any <b>OutputStream</b> object as well as <b>Writer</b> objects. However, <b>PrintWriter</b> has no more support for formatting than <b>PrintStream</b> does; the interfaces are virtually the same. <font size="-2"><a href="mailto:TIJ3@MindView.net?Subject=[TIJ3]Chap11_1664" title="Send BackTalk Comment">Feedback</a></font><br></p>
<p>The <b>PrintWriter</b> constructor also has an option to perform automatic flushing, which happens after every <b>println( )</b> if the constructor flag is set. <font size="-2"><a href="mailto:TIJ3@MindView.net?Subject=[TIJ3]Chap11_1665" title="Send BackTalk Comment">Feedback</a></font><br></p>
<h3>
<a name="_Toc24775796"></a><a name="Heading14277"></a>Unchanged Classes</h3>
<p>Some classes were left unchanged between Java 1.0 and Java 1.1: <br></p>
<div align="center" style="position:relative; left: 0"><table border="1">
<tr valign="top">
<th width="221.333278" colspan="1" rowspan="1" valign="top">
<p class="Table"><a name="Index1305"></a><a name="Index1306"></a><a name="Index1307"></a><a name="Index1308"></a><a name="Index1309"></a><a name="Index1310"></a><a name="Index1311"></a><a name="Index1312"></a>Java 1.0 classes without corresponding Java 1.1 classes<br></p>
</th>
</tr>
<tr valign="top">
<td width="221.333278" colspan="1" rowspan="1" valign="top">
<p class="Table"><b>Dat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -