黑马程序员——Java基础-13--IO 2

来源:互联网 发布:数据规范化方法 编辑:程序博客网 时间:2024/05/17 12:06
--------------------- android培训 、 java培训 、 期待与您交流! ----------------------  


1、  IO(Input  Output)流:

流:流动方式,技术名称的体现。其实流就是在调用底层资源。
IO流用来处理设备之间的数据传输;
Java对数据的操作是通过流的方式;
Java用于操作流的对象都在IO包中;
流按操作数据分为两种:字节流与字符流。
流按流向分为:输入流,输出流。
 
ASCII;

2、 IO流常用基类:
字节流的抽象基类:
InputStream ,OutputStream。
字符流的抽象基类:
Reader , Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。

练习:将c盘中的文本文件复制到d盘中。
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="kwd" style="color: rgb(0, 0, 136);">public</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">class</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">CopytTextTest</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">     </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="str" style="color: rgb(0, 136, 0);">/         平时复制:操作源,放到缓冲区里,</span></div><div><span class="str" style="color: rgb(0, 136, 0);">    public static void main(String[] args) throws IOException {</span></div><div><span class="str" style="color: rgb(0, 136, 0);">        /</span><span class="pun" style="color: rgb(102, 102, 0);">*</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">需求:</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">将</span><span class="pln" style="color: rgb(0, 0, 0);">c</span><span class="pun" style="color: rgb(102, 102, 0);">盘中的文本文件复制到</span><span class="pln" style="color: rgb(0, 0, 0);">d</span><span class="pun" style="color: rgb(102, 102, 0);">盘中。</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">思路:</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">,既然是复制,必须要有源。</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">,对源就是读取,并将读到的字符数据存储到目的中。</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">3</span><span class="pun" style="color: rgb(102, 102, 0);">,即用到了读,又用到了写。而且还是字符。说明使用</span><span class="typ" style="color: rgb(102, 0, 102);">Reader</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">Writer</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">4</span><span class="pun" style="color: rgb(102, 102, 0);">,操作都是文件,使用的应该是</span><span class="typ" style="color: rgb(102, 0, 102);">FileReader</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="typ" style="color: rgb(102, 0, 102);">FileWriter</span><span class="pun" style="color: rgb(102, 102, 0);">.</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="str" style="color: rgb(0, 136, 0);">/</span></div><div><span class="str" style="color: rgb(0, 136, 0);">        copyText1();</span></div><div><span class="str" style="color: rgb(0, 136, 0);">        copyText2();        </span></div><div><span class="str" style="color: rgb(0, 136, 0);">    }</span></div><div><span class="str" style="color: rgb(0, 136, 0);">    public static void copyText2() {        </span></div><div><span class="str" style="color: rgb(0, 136, 0);">        /</span><span class="pun" style="color: rgb(102, 102, 0);">*</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="pln" style="color: rgb(0, 0, 0);">  </span><span class="lit" style="color: rgb(0, 102, 102);">02</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">复制使用数组缓冲区完成。</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">         </span><span class="pun" style="color: rgb(102, 102, 0);">*</span><span class="str" style="color: rgb(0, 136, 0);">/     </span></div><div><span class="str" style="color: rgb(0, 136, 0);">        /</span><span class="pun" style="color: rgb(102, 102, 0);">/</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">,创建读取流和写入流。</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="typ" style="color: rgb(102, 0, 102);">FileReader</span><span class="pln" style="color: rgb(0, 0, 0);"> fr </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">null</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="typ" style="color: rgb(102, 0, 102);">FileWriter</span><span class="pln" style="color: rgb(0, 0, 0);"> fw </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">null</span><span class="pun" style="color: rgb(102, 102, 0);">;</span><span class="pln" style="color: rgb(0, 0, 0);">       </span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">try</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            fr </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">new</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">FileReader</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"temp\\CopytTextTest.java"</span><span class="pun" style="color: rgb(102, 102, 0);">);</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            fw </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">new</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">FileWriter</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"temp\\demo_copy2.txt"</span><span class="pun" style="color: rgb(102, 102, 0);">);</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span></div><div><span class="pln" style="color: rgb(0, 0, 0);">                </span><span class="com" style="color: rgb(136, 0, 0);">//定义一个缓冲区数组。</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            char[] buf = new char[1024];</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            </span></div><div><span class="com" style="color: rgb(136, 0, 0);">            int len = 0;</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            while((len=fr.read(buf))!=-1){</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            fw.write(buf,0,len);    //写有效的读取几个就写几个。fw.write(buf);是写1024个,废了。</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            }</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        } catch (Exception e) {</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            </span></div><div><span class="com" style="color: rgb(136, 0, 0);">            e.printStackTrace();</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        }finally{</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            if(fw!=null)    // 2个if单独判断。</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                try {</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                    fw.close();    //真的关闭失败,你是处理不了的,继续抛</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                } catch (Exception e2) {</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                    throw new RuntimeException("写入关闭失败");</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                }</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            if(fr!=null)</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                try {</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                    fr.close();</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                } catch (Exception e2) {</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                    throw new RuntimeException("读取关闭失败");</span></div><div><span class="com" style="color: rgb(136, 0, 0);">                }</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        }</span></div><div><span class="com" style="color: rgb(136, 0, 0);">    }</span></div><div><span class="com" style="color: rgb(136, 0, 0);">******************  01  效率低的方法:</span></div><div><span class="com" style="color: rgb(136, 0, 0);">    public static void copyText() throws IOException {      </span></div><div><span class="com" style="color: rgb(136, 0, 0);">        //1,创建一个字符读取流和指定的源相关联。</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        FileReader fr = new FileReader("temp\\CopytTextTest.java");</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        </span></div><div><span class="com" style="color: rgb(136, 0, 0);">        //2,确定数据存储的目的。</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        FileWriter fw = new FileWriter("temp\\demo_copy.txt");</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        </span></div><div><span class="com" style="color: rgb(136, 0, 0);">        //3,读一个写出去。有很多字符,需要循环。 当读取动作返回-1,说明结束。</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        int ch = 0;</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        while((ch=fr.read())!=-1){</span></div><div><span class="com" style="color: rgb(136, 0, 0);">            fw.write(ch);// 如果写一个的,建议不要刷新</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        }       </span></div><div><span class="com" style="color: rgb(136, 0, 0);">        //4,关闭资源。 </span></div><div><span class="com" style="color: rgb(136, 0, 0);">        fw.close();</span></div><div><span class="com" style="color: rgb(136, 0, 0);">        fr.close();</span></div><div><span class="com" style="color: rgb(136, 0, 0);">    }</span></div><div><span class="com" style="color: rgb(136, 0, 0);">}</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>

3、IO程序的书写

导入IO包中的类
进行IO异常处理
在finally中对流进行关闭;

4、字符流——创建文件;

创建流对象,建立数据存放文件;
FileWriter fw = new FileWriter(“Test.txt”);
调用流对象的写入方法,将数据写入流
fw.write(“text”);
关闭流资源,并将流中的数据清空到文件中。
fw.close();
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="typ" style="color: rgb(102, 0, 102);">FileWriter</span><span class="pln" style="color: rgb(0, 0, 0);"> fw </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">null</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">try</span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            fw </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">new</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">FileWriter</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"Test.txt"</span><span class="pun" style="color: rgb(102, 102, 0);">);</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            fw</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">write</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"text"</span><span class="pun" style="color: rgb(102, 102, 0);">);</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">catch</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="typ" style="color: rgb(102, 0, 102);">IOException</span><span class="pln" style="color: rgb(0, 0, 0);"> e</span><span class="pun" style="color: rgb(102, 102, 0);">){</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="typ" style="color: rgb(102, 0, 102);">System</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">out</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">println</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">e</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">toString</span><span class="pun" style="color: rgb(102, 102, 0);">());</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">finally</span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="typ" style="color: rgb(102, 0, 102);">If</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">fw</span><span class="pun" style="color: rgb(102, 102, 0);">!=</span><span class="kwd" style="color: rgb(0, 0, 136);">null</span><span class="pun" style="color: rgb(102, 102, 0);">)</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="kwd" style="color: rgb(0, 0, 136);">try</span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">                                                fw</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">close</span><span class="pun" style="color: rgb(102, 102, 0);">();</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="kwd" style="color: rgb(0, 0, 136);">catch</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="typ" style="color: rgb(102, 0, 102);">IOException</span><span class="pln" style="color: rgb(0, 0, 0);"> e</span><span class="pun" style="color: rgb(102, 102, 0);">){</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">                </span><span class="typ" style="color: rgb(102, 0, 102);">System</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">out</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">println</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">e</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">toString</span><span class="pun" style="color: rgb(102, 102, 0);">());</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="pun" style="color: rgb(102, 102, 0);">}</span><span class="pln" style="color: rgb(0, 0, 0);">           </span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
 
5、 字符流——读取文件:
建立一个流对象,和指定的文件数据关联。
FileReader fr = new FileReader(“Test.txt”);
创建一个临时存放数据的数组。
char[] ch = new char[1024];
调用流对象的读取方法将流中的数据读入到数组中。
fr.read(ch);
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="typ" style="color: rgb(102, 0, 102);">FileReader</span><span class="pln" style="color: rgb(0, 0, 0);"> fr </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">null</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">try</span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        fr </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">new</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">FileReader</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"c:\\test.txt"</span><span class="pun" style="color: rgb(102, 102, 0);">);</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">char</span><span class="pun" style="color: rgb(102, 102, 0);">[]</span><span class="pln" style="color: rgb(0, 0, 0);"> buf </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">new</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">char</span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="lit" style="color: rgb(0, 102, 102);">1024</span><span class="pun" style="color: rgb(102, 102, 0);">];</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">int</span><span class="pln" style="color: rgb(0, 0, 0);"> len</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">while</span><span class="pun" style="color: rgb(102, 102, 0);">((</span><span class="pln" style="color: rgb(0, 0, 0);">len</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);">fr</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">read</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">buf</span><span class="pun" style="color: rgb(102, 102, 0);">))!=-</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">){</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="typ" style="color: rgb(102, 0, 102);">System</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">out</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">println</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="kwd" style="color: rgb(0, 0, 136);">new</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">String</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">buf</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);">len</span><span class="pun" style="color: rgb(102, 102, 0);">));</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">catch</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="typ" style="color: rgb(102, 0, 102);">IOException</span><span class="pln" style="color: rgb(0, 0, 0);"> e</span><span class="pun" style="color: rgb(102, 102, 0);">){</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="typ" style="color: rgb(102, 0, 102);">System</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">out</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">println</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"read-Exception :"</span><span class="pun" style="color: rgb(102, 102, 0);">+</span><span class="pln" style="color: rgb(0, 0, 0);">e</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">toString</span><span class="pun" style="color: rgb(102, 102, 0);">());</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">finally</span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">fr</span><span class="pun" style="color: rgb(102, 102, 0);">!=</span><span class="kwd" style="color: rgb(0, 0, 136);">null</span><span class="pun" style="color: rgb(102, 102, 0);">){</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="kwd" style="color: rgb(0, 0, 136);">try</span><span class="pun" style="color: rgb(102, 102, 0);">{</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">                fr</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">close</span><span class="pun" style="color: rgb(102, 102, 0);">();</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="kwd" style="color: rgb(0, 0, 136);">catch</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="typ" style="color: rgb(102, 0, 102);">IOException</span><span class="pln" style="color: rgb(0, 0, 0);"> e</span><span class="pun" style="color: rgb(102, 102, 0);">){</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">                </span><span class="typ" style="color: rgb(102, 0, 102);">System</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">out</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">println</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="str" style="color: rgb(0, 136, 0);">"close-Exception :"</span><span class="pun" style="color: rgb(102, 102, 0);">+</span><span class="pln" style="color: rgb(0, 0, 0);">e</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">toString</span><span class="pun" style="color: rgb(102, 102, 0);">());</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">            </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);">        </span><span class="pun" style="color: rgb(102, 102, 0);">}</span></div><div><span class="pln" style="color: rgb(0, 0, 0);"> </span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>

6、 字符流的缓冲区:

缓冲区的出现提高了对数据的读写效率。
对应类
    BufferedWriter
    BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。


7、 装饰设计模式:
对原有类进行了功能的改变,增强。
装饰模式的基本格式。
它与继承有什么不同?
了解BufferedReader的原理。

缓冲区:提高流的读写效率。以前流对象+数组完成缓冲。
后来把--缓冲区封装一个对象,使用了装饰设计模式。
 
* 装饰模式:为了解决给类的功能进行增强而出现的。
* Writer
* |--TextWriter
* |--MediaWriter
* 想要对流对象的功能进行增强,比如提高写入的效率。
* 使用缓冲技术。
* Writer
* |--TextWriter
* |--BufferedTextWriter
* |--MediaWriter
* |--BufferedMediaWriter
* 每一个子类这样实现是可以的,但是导致继承体系较为臃肿。
* 发现其实无论哪个子类需要高效,使用的都是缓冲技术。
* 干脆将缓冲技术进行单独的描述和封装。
* 要缓冲区谁,就将谁传给缓冲区。
* BufferdWriter
* class BufferedWriter extends Writer
* {
* BufferedWriter(Writer w)// 是缓冲writer, 
* {}
* }
* 装饰设计模式。
* Writer
* |--TextWriter
* |--MediaWriter
* |--BufferedWriter
* 装饰类和被装饰的特点:
* 1,装饰类中的构造函数需要接受--被装饰类。
* 2,装饰类和被装饰类应该所属于同一个体系。
 

8、 字节流
FileInputStream;
FileOutputStream;
基本操作与字符流类相同
但它不仅可以操作字符,还可以操作其他媒体文件


9、 字节流的缓冲区
        同样是提高了字节流的读写效率。
BufferedInputStream
BufferedOUtputStream


10、 转换流

InputStreamReader,OutputStreamWriter
转换流的由来:
        字符流与字节流之间的桥梁
        方便了字符流与字节流之间的操作
转换流的应用:
        字节流中的数据都是字符时,转成字符流操作更高效。
例程:标准输入输出。


11、 标准输入输出流:

System类中的字段:in,out。
它们各代表了系统标准的输入和输出设备。
默认输入设备是键盘,输出设备是显示器。
System.in的类型是InputStream.
System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.


11.1  标准输入输出流示例


例:获取键盘录入数据,然后将数据流向显示器,那么显示器就是目的地。
通过System类的setIn,setOut方法对默认设备进行改变。
System.setIn(new FileInputStream(“1.txt”));//将源改成文件1.txt。
System.setOut(new PrintStream(“2.txt”));//将目的改成文件2.txt
因为是字节流处理的是文本数据,可以转换成字符流,操作更方便。
BfferedReader bufr = 
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = 
new BufferedWriter(new OutputStreamWriter(System.out));


---------------------- android培训 、 java培训 、 期待与您交流! ----------------------  
0 0
原创粉丝点击