关闭

黑马程序员-java基础IO流(3)

57人阅读 评论(0) 收藏 举报

——- android培训java培训、期待与您交流! ———-


一、BufferedReader类

1、定义:

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
注:可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

2、常用方法:

常用的方法如下:

BufferedReader(Reader in) -> 在创建一个使用默认大小输入缓冲区的缓冲字符输入流。

close() -> 关闭该流并释放与之关联的所有资源。

read() -> 读取单个字符。

read(char[] cbuf, int off, int len) -> 将字符读入数组的某一部分。

readLine() -> 读取一个文本行。

代码块

练习:通过字符数组进行读取D盘下的demo.txt文件,然后在控制台上显示。

package com.itheima2;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * 字符流的缓冲区:
 * 出现时为了提高流的操作效率而出现的。
 * 所以在创建缓冲区之前,必须要先有流对象
 * 
 * 该缓冲区中提供了一个跨平台的换行符。
 * newLine();
 * 
 * readLine();不返回任何终止符
 * 
 * 装饰设计模式:
 * 当想要对已有的对象进行功能增强时,
 * 可以定义类。将已有对象传入,基于已有的功能,并提供加强功能。
 * 那么自定义的该类称为装饰类。
 * 
 * 装饰类通常会通过构造方法接收被装饰的对象。
 * 并基于被装饰的对象的功能,提供更强的功能。
 * 
 * BufferedReaderDemo2对象
 * @author jjy
 */
public class BufferedReaderDemo2{

    public static void main(String args[])throws IOException{
        FileReader fr = new FileReader("D:\\buf.txt");

        //为了提高效率。加入缓冲技术。
        BufferedReader bufr = new BufferedReader(fr);

        String line = null;

        while((line=bufr.readLine())!=null){
            System.out.println(line);
        }

        String s1 = bufr.readLine();

        System.out.println("s1:"+s1);

        bufr.close();
    }

}

运行结果:
abcde
s1:null

一、BufferedWriter类

1、定义:

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
注:该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 (‘\n’) 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

2、常用方法:

常用的方法如下:

BufferedWriter(Writer out) -> 创建一个使用默认大小输出缓冲区的缓冲字符输出流。

close() -> 关闭该流并释放与之关联的所有资源。

flush() -> 刷新该流的缓冲。

newLine() -> 写入一个行分隔符。

write(int c) -> 写入单个字符。

write(char[] cbuf) -> 写入字符数组。

write(char[] cbuf, int off, int len) -> 写入字符数组的某一部分。

代码块

练习:使用FileWriter类在D盘的buf.txt中写入“abcde”字符串。

package com.itheima2;

import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 字符流的缓冲区:
 * 出现时为了提高流的操作效率而出现的。
 * 所以在创建缓冲区之前,必须要先有流对象
 * 
 * 该缓冲区中提供了一个跨平台的换行符。
 * newLine();
 * 
 * BufferedWriterDemo1对象
 * @author jjy
 */
public class BufferedWriterDemo1{

    public static void main(String args[]){

        FileReader fr = null;
        try {

            //创建一个字符写入流对象。
            FileWriter fw = new FileWriter("D:\\buf.txt");

            //为了提高字符写入流效率。加入了缓冲技术。只要将需要被提高效率的流对象作为
            //参数传递给缓冲区的构造函数即可。
            BufferedWriter bufw = new BufferedWriter(fw);

            bufw.write("1234567");

            bufw.flush();

            //其实关闭缓冲区,就是在关闭缓冲区中的流对象。
            bufw.close();


        } catch (IOException e) {
            System.out.println(e.toString());

        }finally{
            try {
                if(fr!=null){
                    fr.close();
                }

            } catch (IOException e) {
                System.out.println(e.toString());
            }
        }
    }

}

运行结果:
1234567

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:705次
    • 积分:115
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档