IO流的使用(一)

来源:互联网 发布:网络重置怎么弄 编辑:程序博客网 时间:2024/05/18 08:37

IO流的使用(一)

java中的IO流真的很重要,但是流的种类又有很多,很难搞的清楚,我们需要慢慢学习,渐渐的熟悉它。
先说字符流吧~
字符流的抽象基类: Reader 和Writer(读和写),他们都是抽象类,abstract修饰的。
字符流–就是用来读写字符的,像中文汉字、英文字母之类。

Writer

Writer(abstract)—OutputStreamWriter(abstract)—FileWriter(实现类)
flush()方法:刷新流对象中缓冲的数据
close()方法:关闭流资源,但是关闭流之前会刷新一次缓冲中的数据
区别:flush()刷新后,流可以继续使用,但是close()刷新后,会将流关闭。

文件的续写

在FileWriter的构造方法中,传递一个参数true,代表不覆盖已有文件,并在已有文件的末尾进行文件的续写。
**关于续写文件的换行
在java中 \n表示换行,在windows中,换行用\r\n。所以文件如果要换行的话,请写入\r\n。

Reader

read()方法:一次读一个字符,而已会自动往下读。读取完毕,返回-1.

demo:文件的复制

package com.bxd.shiba;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class CopyFileTest {    public static void main(String[] args) {        copy();    }    private static void copy(){        FileReader fr = null;        FileWriter fw = null;        try {            fr = new FileReader("F:\\javaworkspaces\\J2SEBase\\src\\com\\bxd\\shiba\\RuntimeTest.java");            fw = new FileWriter("F:\\javaworkspaces\\J2SEBase\\src\\com\\bxd\\shiba\\RuntimeTest_copy.java");            char[] buf = new char[1024];            int len = 0;            if(-1 != (len=fr.read(buf))){                fw.write(buf, 0, len);            }        } catch (Exception e) {            throw new RuntimeException("文件读写失败");        } finally {            if(fr!=null){                try {                    fr.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if(fw!=null){                try {                    fw.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}
0 0