⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java07_03.htm

📁 JAVA的课件
💻 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">&nbsp;&nbsp;&nbsp; InputStream和OutputStream及其子类是以字节(8位)为单位对流数据进行处理的,而Reader和Writer则以字符(16位)为单位对流数据进行处理。它们也是抽象类。</p>    
    
<p align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Reader和Writer分别派生出一组类,用于不同情况下的字符数据的输入和输出。其中InputStreamReader和OutputStreamWriter是从字节流到字符流转换的桥梁:前者从输入字节流中读入字节数据,按照指定或是默认的字符集将其转换成为字符。后者则将字符数据转换成为字节数据写到输出流。</p>    
    
<p align="left">&nbsp;&nbsp;&nbsp; 下表是它们的构造方法:</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&nbsp;in)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an    
      InputStreamReader that uses the default charset.</td>   
  </tr>   
  <tr class="TableRowColor" bgColor="white">   
    <td><code><b>InputStreamReader</b>(InputStream&nbsp;in, Charset&nbsp;cs)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an    
      InputStreamReader that uses the given charset.</td>   
  </tr>   
  <tr class="TableRowColor" bgColor="white">   
    <td><code><b>InputStreamReader</b>(InputStream&nbsp;in, CharsetDecoder&nbsp;dec)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an    
      InputStreamReader that uses the given charset decoder.</td>   
  </tr>   
  <tr class="TableRowColor" bgColor="white">   
    <td><code><b>InputStreamReader</b>(InputStream&nbsp;in, String&nbsp;charsetName)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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&nbsp;out)</code><br>    
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an     
      OutputStreamWriter that uses the default character encoding.</td>    
  </tr>    
  <tr class="TableRowColor" bgColor="white">    
    <td><code><b>OutputStreamWriter</b>(OutputStream&nbsp;out, Charset&nbsp;cs)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an     
      OutputStreamWriter that uses the given charset.</td>    
  </tr>    
  <tr class="TableRowColor" bgColor="white">    
    <td><code><b>OutputStreamWriter</b>(OutputStream&nbsp;out, CharsetEncoder&nbsp;enc)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an     
      OutputStreamWriter that uses the given charset encoder.</td>    
  </tr>    
  <tr class="TableRowColor" bgColor="white">    
    <td><code><b>OutputStreamWriter</b>(OutputStream&nbsp;out, String&nbsp;charsetName)</code><br>   
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an     
      OutputStreamWriter that uses the named charset.</td>    
  </tr>    
  </table>  
<br>  
    
  
例1、从键盘输入一行字符,并显示到屏幕上 
<p>import java.io.*;<br>  
class ReadAndWrite{<br>  
&nbsp; public static void main(String argv[]){<br>  
&nbsp;&nbsp;&nbsp; int ch;<br>  
&nbsp;&nbsp;&nbsp; InputStreamReader fin=new InputStreamReader(System.in);<br>  
&nbsp;&nbsp;&nbsp; OutputStreamWriter fout=new OutputStreamWriter(System.out);<br>  
&nbsp;&nbsp;&nbsp; try{<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("请输入一行字符:");<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((ch=fin.read())!='\n')<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.write(ch);<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.close(); //如果不关闭输出流,则屏幕上什么显示也没有<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin.close();<br> 
&nbsp;&nbsp;&nbsp;&nbsp; }<br> 
&nbsp;&nbsp;&nbsp;&nbsp; catch(IOException e){<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;输入流有误!");<br> 
&nbsp;&nbsp;&nbsp;&nbsp; }<br> 
&nbsp; }<br> 
}</p> 
<p>例2、文件复制</p> 
<p>import java.io.*;<br>  
class ReadAndWriteFile{<br>  
&nbsp; public static void main(String argv[]){<br>  
&nbsp;&nbsp;&nbsp; int ch;<br>  
&nbsp;&nbsp;&nbsp; InputStreamReader fin;<br>  
&nbsp;&nbsp;&nbsp; OutputStreamWriter fout;<br>  
&nbsp;&nbsp;&nbsp; if (argv.length!=2)<br>  
&nbsp;&nbsp;&nbsp;&nbsp; { System.out.println(&quot;参数格式不对,应该为:java CopyFile 源文件名 目标文件名");<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br> 
&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;<br> 
&nbsp;&nbsp;&nbsp;&nbsp; try{<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin=new InputStreamReader(new FileInputStream(argv[0]));&nbsp;  
//注意这两个构造方法<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout=new OutputStreamWriter(new FileOutputStream(argv[1]));<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((ch=fin.read())!=-1)<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.write(ch);<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.close();&nbsp;<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin.close();<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("复制成功!");<br> 
&nbsp;&nbsp;&nbsp;&nbsp; }<br> 
&nbsp;&nbsp;&nbsp;&nbsp; catch(IOException e){<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("文件读写有误!");<br> 
&nbsp;&nbsp;&nbsp;&nbsp; }<br> 
&nbsp;&nbsp; }<br> 
}<br> 
</p> 
<p>&nbsp; 注意:Reader和Writer的子类要配套使用,InputStream和OutputStream的子类也要配套使用,不可交错。&nbsp;&nbsp;
</p>
<p>&nbsp;&nbsp;&nbsp;  
上面这两个类在处理文件时不是很方便(构造方法的调用太麻烦),所以在处理一般文件时,我们更常用的是它们的子类: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 + -