java.io.InputStream和OutputStream是所有字节输入流与输出流的超类,FileInputStream,ObjectOutputStream,BufferedInputStream都继承InputStream或OutputStream
java.io.Reader和Writer是所有字节输入流与输出流的超类,和字节流的超类是平级关系
Reader和Writer是两个抽象类,里面规定了所有字符流都必须具备的读写字符的相关方法
字符流最小读写单位为字符,但底层实际上还是读写字节,只是字节与字符的转换工作由字符流完成
InputStreamReader和OutputStreamWriterjava.io.InputStreamReader和OutputStreamWriter是常用的字符流的一对实现类,同时它们也是一对高级流
在流链接中的作用:
1.衔接字符流和字节流
2.将字节与字符进行转换方便读写
OutputStreamWriter
public class OSWDemo {
public static void main(String[] args) throws IOException {
//向文件osw.txt中写入字符串
FileOutputStream fos = new FileOutputStream("osw.txt");
OutputStreamWriter osw = new OutputStreamWriter(
fos,StandardCharsets.UTF_8);
//转换流会将写出的字符串转换为字节后再通过链接的文件流写入文件。
osw.write("摩擦摩擦~在光滑的马路牙子上打出溜滑~");
osw.write("我的滑板鞋~时尚时尚最时尚~");
System.out.println("写出完毕!");
osw.close();
}
}
InputStreamReader
public class ISRDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("osw.txt");
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
// int d = isr.read();
int d;
while((d = isr.read())!=-1) {
System.out.print((char) d);
}
isr.close();
}
}
缓冲字符流
java.io.BufferedWriter和BufferedReader
缓冲字符流内部也有一个缓冲区,读写文本数据;以块读写形式加快效率
缓冲字符输出流:java.io.PrintWriter
PrintWriter具有自动行刷新的缓冲字符输出流,它内部总会自动连接BufferedWriter作为块读写加速使用。
具体使用流程:
1.App中输入“你好”
2.PrintWriter中按行写得出字符串 ,并且自动行刷新,即“你好”+n
3.BufferedWriter中进行快写文本数据加速
4.OutputStreamWriter中衔接其他字符流和下面的字节流,将写入的字符转化为字节
5.FileOutputStream将字节写入到文件中
public class PWDemo {
public static void main(String[] args) throws FileNotFoundException {
//向文件pw.txt中写入文本数据
PrintWriter pw = new PrintWriter("pw.txt");
pw.println("super idol的笑容都没你的甜");
pw.println("八月正午的阳光都没你耀眼");
System.out.println("写出完毕");
pw.close();
}
}



