一、打印流
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; }二、转换流
(一)、使用转化流完成数据的写入功能
(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);