Java流系列(五):打印流、转换流、字符缓冲流

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/androidzf/article/details/87878951

一、打印流

PrintStream和PrintWriter的区别:
  • 相同点:都是只有输出功能的流.
  • 不同点:
    • A:PrintStream:默认情况下会自动刷新缓冲区;PrintWriter默认情况下不会自动刷新缓冲区.
    • B:PrintStream(OutputStream out, boolean autoFlush):第二个参数可以值是否要启用自动刷新缓冲区功能,如果指定则为true,否则为false,默认情况下为true.
      PrintWriter(OutputStream out, boolean autoFlush):第二个参数可以指定是否要启用自动刷新缓冲区的功能,如果启用,则将第二个参数设置为true,默认为false,即不会自动刷新缓冲区.

(一)、使用打印字符串流输出数据

PrintWriter打印字符串流默认情况下不会刷新缓冲区,如果想将数据马上写出到目标设备中,必须手工调用刷新缓冲区的方法.

1、实例化打印流字符串流对象

printWriter=new PrintWriter("zf.bak");
//第二个参数表示是否开启自动刷新缓冲区的功能,如果启用,则 调用println、printf 或 format 方法将刷新输出缓冲区
printWriter=new PrintWriter(new FileOutputStream("wcf.bak"),true);

2、打印数据

printWriter.write("你好");
printWriter.print("世界!\r\n");
printWriter.println("凤凰涅槃");//自动刷新缓冲区
printWriter.printf("浴火重生!");//自动刷新缓冲区
//%s:代表字符串的占位符;%d:代表整数的占位符;%数字d:代表这个位置会占五个整数的位置,如果数字不够则在左边填充空格.
printWriter.printf("%5d只%5s重生!",5,"孙侯");//自动刷新缓冲区

3、关闭打印流

if(printWriter!=null){
printWriter.close();
    //将打印流垃圾化
    printWriter=null;
}

(二)、使用打印流完成数据的写出操作.

PrintStream进行输出数据时会自动刷新缓存区.

1.实例化打印流对象

printStream=new  PrintStream("zf.bak");

2.执行写出操作

printStream.write("你好".getBytes());
printStream.print("世界\r\n");//在windows上的换行符:\r\n;在Unix或者Linux上的换行符是:\n
printStream.println("欢迎光临!");
printStream.println("祝您晚安!");

3、关闭打印流

if(printStream!=null){
    printStream.close();
    //将打印流垃圾化
    printStream=null;
}

二、转换流

image

(一)、使用转化流完成数据的写入功能

(String path=“hsj.bak”;)

1.实例化转换流对象并指定文件输出流对象,new

FileOutputStream(path):如果指定的文件不存在,则自动生成,如果存在则覆盖.
outputStreamWriter=new OutputStreamWriter(new FileOutputStream(path));

2、向文件中写入数据

outputStreamWriter.write("举头望明月,低头学Java!");

3、关闭流对象

outputStreamWriter.close();
outputStreamWriter=null;

(二)、使用转化流完成读取数据的功能
1.实例化字节流通向字符流的桥梁对象并关联上文件输入流对象,new FileInputStream(path):如果指定的文件不存在则报文件找不着异常.

inputStreamReader=new InputStreamReader(new FileInputStream(path));

2、将数据读取到字符数组中

char[] buffer=new char[10];
int len=0;
while((len=inputStreamReader.read(buffer))!=-1){
    System.out.println(new String(buffer,0,len));
}

3、关闭流对象,在关闭流时只需要关闭最顶端的流(距离程序最近的流)即可

inputStreamReader.close();
//将流对象垃圾化
inputStreamReader=null;

三、字符缓冲输入流

接收用户键盘录入

1.实例化缓存字符输入流对象并指定转化流和键盘录入对应的输入流System.in

BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));

2、读取用户键盘录入的数据

String name=null;
int len=0;
do{
    System.out.print("请输入的信息:");
    //读取用户键盘录入的数据
    name=bufferedReader.readLine();
    len=name.length();
    if(len==0){
        break;
    }
    System.out.println("name="+name);
}while(true);

猜你喜欢

转载自blog.csdn.net/androidzf/article/details/87878951