📄 java07_03.htm
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java程序设计</title>
</head>
<body background="Bg.gif">
<p align="center"><font size="5"><b>§7.3 Reader和Writer</b></font></p>
<p align="left"> InputStream和OutputStream及其子类是以字节(8位)为单位对流数据进行处理的,而Reader和Writer则以字符(16位)为单位对流数据进行处理。它们也是抽象类。</p>
<p align="left"> Reader和Writer分别派生出一组类,用于不同情况下的字符数据的输入和输出。其中InputStreamReader和OutputStreamWriter是从字节流到字符流转换的桥梁:前者从输入字节流中读入字节数据,按照指定或是默认的字符集将其转换成为字符。后者则将字符数据转换成为字节数据写到输出流。</p>
<p align="left"> 下表是它们的构造方法:</p>
<table border=1>
<tr class="TableHeadingColor" bgColor="#ccccff">
<td colSpan="2"><font size="+2"><b>InputStreamReader Constructor Summary</b></font></td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>InputStreamReader</b>(InputStream in)</code><br>
Create an
InputStreamReader that uses the default charset.</td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>InputStreamReader</b>(InputStream in, Charset cs)</code><br>
Create an
InputStreamReader that uses the given charset.</td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>InputStreamReader</b>(InputStream in, CharsetDecoder dec)</code><br>
Create an
InputStreamReader that uses the given charset decoder.</td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>InputStreamReader</b>(InputStream in, String charsetName)</code><br>
Create an
InputStreamReader that uses the named charset.</td>
</tr>
</table>
<br>
<table border=1>
<tr class="TableHeadingColor" bgColor="#ccccff">
<td colSpan="2"><font size="+2"><b>OutputStreamWriter Constructor Summary</b></font></td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>OutputStreamWriter</b>(OutputStream out)</code><br>
Create an
OutputStreamWriter that uses the default character encoding.</td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>OutputStreamWriter</b>(OutputStream out, Charset cs)</code><br>
Create an
OutputStreamWriter that uses the given charset.</td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>OutputStreamWriter</b>(OutputStream out, CharsetEncoder enc)</code><br>
Create an
OutputStreamWriter that uses the given charset encoder.</td>
</tr>
<tr class="TableRowColor" bgColor="white">
<td><code><b>OutputStreamWriter</b>(OutputStream out, String charsetName)</code><br>
Create an
OutputStreamWriter that uses the named charset.</td>
</tr>
</table>
<br>
例1、从键盘输入一行字符,并显示到屏幕上
<p>import java.io.*;<br>
class ReadAndWrite{<br>
public static void main(String argv[]){<br>
int ch;<br>
InputStreamReader fin=new InputStreamReader(System.in);<br>
OutputStreamWriter fout=new OutputStreamWriter(System.out);<br>
try{<br>
System.out.print("请输入一行字符:");<br>
while ((ch=fin.read())!='\n')<br>
fout.write(ch);<br>
fout.close(); //如果不关闭输出流,则屏幕上什么显示也没有<br>
fin.close();<br>
}<br>
catch(IOException e){<br>
System.out.println("输入流有误!");<br>
}<br>
}<br>
}</p>
<p>例2、文件复制</p>
<p>import java.io.*;<br>
class ReadAndWriteFile{<br>
public static void main(String argv[]){<br>
int ch;<br>
InputStreamReader fin;<br>
OutputStreamWriter fout;<br>
if (argv.length!=2)<br>
{ System.out.println("参数格式不对,应该为:java CopyFile 源文件名 目标文件名");<br>
return;<br>
} <br>
try{<br>
fin=new InputStreamReader(new FileInputStream(argv[0]));
//注意这两个构造方法<br>
fout=new OutputStreamWriter(new FileOutputStream(argv[1]));<br>
while ((ch=fin.read())!=-1)<br>
fout.write(ch);<br>
fout.close(); <br>
fin.close();<br>
System.out.println("复制成功!");<br>
}<br>
catch(IOException e){<br>
System.out.println("文件读写有误!");<br>
}<br>
}<br>
}<br>
</p>
<p> 注意:Reader和Writer的子类要配套使用,InputStream和OutputStream的子类也要配套使用,不可交错。
</p>
<p>
上面这两个类在处理文件时不是很方便(构造方法的调用太麻烦),所以在处理一般文件时,我们更常用的是它们的子类:FileReader和FileWriter。</p>
<p align="left"><a href="index.htm">回目录</a> <a href="java07_02.htm">上一课</a>
<a href="java07_04.htm">下一课</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -