字符输入输出流

注意:在写出的时候一定要注意要记得清空缓冲区!

字符输入流FileReader

FileInputStream使用的方式和方法一样,不过返回的数据类型为char类型的,所以我们要用char字符串数组接受

方法
    close()             关闭输入流
    int read ()                              从输入流读取下一字符

    int read (char[] ch)             从输入流读取若干字符数据,并存储到字符数组

    read (char[] ch, int off, int len)       从输入流读取至多len个字符数据,并存储到字符数组

    close()          关闭字符输入流


字符输出流FileWriter

同样跟FileoutputStream使用方法一样

使用过程:

  1.创建一个FileWriter对象。明确要被操作的文件,如果该目录下已经有同名文件将被覆盖追加true免除覆盖

    FileWriter fw=new FileWriter("demo.txt");

    2.调用write方法,将字符串写入到流中

    fw.write(str);

    3. 刷新流对象中的缓冲区

    fw.flush();

    4.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,和flush的区别,flush刷新后,流可以继续使用,close刷新后将会将流关闭

    fw.close();

BufferReader

字符流提供了带缓冲区的包装流,就是BufferReader,它自带缓冲区

BufferedReader用于对字符输入流进行包装,缓冲区的出现提高了对数据的读写效率

    BufferedReader创建步骤:
    1.创建一个字符写入流对象

        FileReader fr=new FileReader ("a.txt");

    2.将需要被 提高效率 的流对象 作为参数 传递给缓冲区的构造函数

        BufferedReader bf=new BufferedReader (fr);

    3.读取流对象:该缓冲区 提供了一个一次读取一行 的方法。当 返回null时表示 文件读到末尾

        String line=null;

        while(( line=bufr.readLine() )!=null) {

        String s=line;}

    4.关闭

        bufr.close();



程序开发中,经常需要向文件中写入字符,可以使用Writer的子类FileReader

但是有时会出现中文编码格式问题

1于是我们就要通过FileReader的父类InputStreamReader作为中转站用字节流inputStream,读取字节文件

2再创建InputStreamReader(fis,“UNF-8”)这种格式限制读取的中文编译格式,改变的只是读取的字节流,源文件并没改变

3最后用BufferReader(ISR)创建对象调用读取方法

4writer也是一样的,可以通过中装输出不同编码格式的内容


示例:

public static void main(String[] args) {
OutputStream
is = null;               //先创建字节流
OutputStreamWriter
isr = null;//再转换成包装后的字节流,可以设置编码格式
BufferedWriter bw
= null;           //再转换成BuffeRwriter

try {
is = new FileOutputStream
("d:/jin1.txt",true);
isr = new OutputStreamWriter
(is, "UTF-8");
bw = new BufferedWriter
(isr);

bw.write("金前旺");

               } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (bw!=null) {
bw.close();
}
if (isr!=null) {
isr.close();
}
if (is!=null) {
is.close();
}

} catch (IOException e) {
e.printStackTrace();





public static void main(String[] args) {
FileReader fr =null;
BufferedReader br =null;
FileWriter fw = null;
BufferedWriter bw = null;


try {
fr = new FileReader("d:/bet.txt");
br = new BufferedReader(fr);
fw = new FileWriter("d:/bet.txt",true);
bw = new BufferedWriter(fw);
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine())!=null) {
sb.append(line);
}

String str = sb.toString();
/*String s1=str.replace("{name}","豆豆");
String s2=s1.replace("{type}","拉布拉多");
String s3=s2.replace("{master}","金前旺");*/
str.replace("name","豆豆").replace("type","拉布拉多").replace("master","金前旺");

bw.newLine();
bw.write(str);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值