1、缓冲流的缓冲区操作
将缓冲流连接在文件流可以提高效率,缓冲流实际上本质就是进行块读写,无论我们是使用缓冲流进行何种读写方式,最终都会被缓冲流转换为快读写形式通过文件流进行实际操作。
缓冲流内部维护了一个8K的字节流,用于块读写操作。
BufferedInputStream:输入缓冲流;
BufferedOutputStream:输出缓冲流
缓冲流提供了一个强制写出数据的方法:flush();
//文件输出流
FileOutputStream fos = new FileOutputStream("bos.txt",true);
//文件输出缓冲流
BufferedOutputStream bos = new BufferedOutputStream(fos);
String str = "人非要经历一番不同平时的劫难才能脱胎换骨,成为真正能解决问题的人";
byte[] bytes = str.getBytes("UTF-8");
bos.write(bytes);
bos.flush();//强制将当前缓冲区数据写出
bos.close();//缓冲close()时会调用flush()
2、字符流
java将流按照读写单位划分为字节流和字符流
InputStream和OutputStream是所有字节流父类,而java.io.Reader和java.io.Writer是字符流的父类。
字符流知识方便我们读写字符,底层本质还是读写字节,知识字节和字符的转换,工作交给了转换流来完成。
转换流:
java.io.InputStreamReader
java.io.OutputStreamWriter
java提供的其他高级字符流都有一个特点就是只能连接在其他字符流上,但通常低级流都是字节流。这个就导致字符流不能直接搭配字节流使用,但是转换流例外;他们本身就是字符流,而他们又可以连接字节流,所以在实际开发中当我们使用高级的字符流时,通常与字节流连接时需要使用转换流,它起到了“承上启下”的作用,也就是“将字符转换为字节”的功能。
OutputStreamWriter构造方法中OutputStreamWriter(OutStream out)、InputStreamReader(InputStream in);
OutputStreamWriter(OutStream out,String charset)
InputStreamReader(InputStream in,String charset);
charset:编码格式
//输出字节流
FileOutputStream fos = new FileOutputStream("osw.txt");
//输出转换流
OutputStreamWriter osw = new OutputStream(fos,"UTF-8");
String str = "窗前明月光";
osw.writer(str);
osw.writer("疑是地上霜");
System.out.println(&#