java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别
2015-05-14 23:06
429 查看
回顾字节流输入输出
Reader和Writer
Reader和Writer这两个抽象类主要用来读写字符流。
InputStreamReader是字节流通向字符流的桥梁
BufferedReader提供一个ReadLine()方法
OutputStreamWriter是字符流到字节流的桥梁
BufferedWriter也提供了一个很有用的方法,请看示例:
示例:
示例:直接读取控制台的输入流
结果:
xiaohong
xiaohong
补充:字节流和字符流的区别
干货1:因为字符流操作时使用了缓冲区,而 在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。
干货2:流分类:
1.Java的字节流
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
2.Java的字符流
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new
干货3:在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[] String.getBytes(String charsetName)
也是一样的道理
Reader和Writer
Reader和Writer这两个抽象类主要用来读写字符流。
InputStreamReader是字节流通向字符流的桥梁
BufferedReader提供一个ReadLine()方法
OutputStreamWriter是字符流到字节流的桥梁
BufferedWriter也提供了一个很有用的方法,请看示例:
示例:
[code]public static void main(String[] args) throws Exception{ //对文件的写入和对文件的读取 FileOutputStream fos = new FileOutputStream("1.txt"); //OutputStreamWriter这个函数的构造方法需要一个OutputStream对象 OutputStreamWriter osw = new OutputStreamWriter(fos); //通常我们构造BufferedWriter去进行写入操作,是一个更有效的写入操作。参数需要Writer类型。 BufferedWriter bw = new BufferedWriter(osw); bw.write("this is test BufferedWriter"); bw.close(); FileInputStream fis = new FileInputStream("1.txt"); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); System.out.println(br.readLine()); br.close(); }
示例:直接读取控制台的输入流
[code] InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String str = null; while((str=br.readLine())!=null){ System.out.println(str); } br.close();
结果:
xiaohong
xiaohong
补充:字节流和字符流的区别
干货1:因为字符流操作时使用了缓冲区,而 在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。
干货2:流分类:
1.Java的字节流
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
2.Java的字符流
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new
干货3:在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[] String.getBytes(String charsetName)
也是一样的道理
相关文章推荐
- java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别
- java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别
- JAVA基础初探(十三)IO简介、字节流与字符流区别、带缓冲的字节/字符流读取数据、FileReader/FileWriter便捷类、Apache IO库使用说明
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
- day19字符流: FileReader FileWriter (BufferedReader BufferedWriter ) 字节流: InputStream OutputStream读取键盘录入
- JAVA基础再回首(二十二)——转换流概述及用法、简化写法FileWriter和 FileReader、字符缓冲流及特殊用法、字节流字符流复制文件方法总结
- FileInputStream(字节流)与fileReader(字符流) 的区别
- FileInputStream(字节流)与fileReader(字符流) 的区别
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
- 【Java.IO】I/O 字节 <-> 字符转换流 —— InputStreamReader,OutputStreamWriter(FileReader,FileWriter)
- Java的IO操作(五) - PrintStream类、字符流、Reader和Writer、带缓冲的字符流BufferedReader和BufferedWriter .
- Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
- 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader
- JAVA学习笔记(三十二)- 字符流 FileReader & FileWriter
- FileInputStream(字节流)与fileReader(字符流) 的区别
- Java IO--字节流与字符流OutputStream/InputStream/Writer/Reader
- Java IO--字节流与字符流OutputStream/InputStream/Writer/Reader
- Java API —— 编码 & IO流( InputStreamReader & OutputStreamWriter & FileReader & FileWriter & BufferedReader & BufferedWriter )
- Java IO操作——字节流(OutputStream、InputStream)和字符流(Writer、Reader)
- Java基础 - IO流之字符流,FileReader,FileWriter,BufferedReader,BufferedWriter,装饰设计模式,编码表