java.io.Writer类,字符输出流,继承于java.lang.Object
Writer的实现类BufferedWriter,CharArrayWriter,FilterWriter,OutputStreamWriter,PipedWriter ,PrintWriter,StringWriter
java.io.Reader类,字符输入流,继承于java.lang.Object
Reader的实现类BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
package com.part01; import java.io.FileOutputStream; /** * java.io.Writer 字符输出流 * 我们操作的是字符,但是存在文件里后就变成字节,也就是说字符流对字符做了编码和解码 */ public class Demo01 { public static void main(String[] args) throws IOException { FileOutputStream fo=new FileOutputStream("d:\\iodemo.txt"); Writer wr=new OutputStreamWriter(fo); String str="大家好吗?"; wr.write(str.toCharArray());//字符串转字符数组 //记得关流 wr.close(); System.out.println("OK"); } }
package com.part01; import java.io.FileInputStream; public class Demo02 { public static void main(String[] args) throws IOException { FileInputStream fi=new FileInputStream("d:\\iodemo.txt"); //Reader re=new InputStreamReader(fi);//Reader 没有getEncoding()方法。 InputStreamReader re=new InputStreamReader(fi); System.out.println(re.getEncoding());//获得默认编码GBK char [] buffer=new char[10]; int len=re.read(buffer); re.close(); System.out.println(Arrays.toString(buffer)); System.out.println(new String(buffer));//用字符数组构建字符串 } }
FileWriter 继承于OutputStreamWriter
FileReader 继承于InputStreamReader
它们两个没有做方法的扩展,只是构方法比较好用,方便地构造Reader和Writer
package com.part01; import java.io.FileWriter; import java.io.IOException; public class Demo03 { public static void main(String[] args) throws IOException { FileWriter fw=new FileWriter("d:\\iodemo.txt"); fw.write("大家好好好好啊"); fw.close(); System.out.println("-------"); } }
上面的都要用已存在字节流来构造。
BufferedWriter继承于Writer
BufferedReader继承于Reader
package com.part01; import java.io.BufferedWriter; /** * java.io.BufferedWriter extends Writer * jvaa.io.BufferedReader extends Reader * 带缓存,可以写换行符,可以按行读, * 要用已存在的Reader和Writer构建 */ public class Demo04 { public static void main(String[] args) throws IOException { FileWriter fw=new FileWriter("d:\\iodemo.txt"); BufferedWriter br=new BufferedWriter(fw); br.write("大家好"); br.newLine(); br.write("明天来"); br.newLine(); br.write("吃火锅"); br.close(); System.out.println("OK"); } }
package com.part01; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Demo05 { public static void main(String[] args) throws IOException { FileReader fi=new FileReader("d:\\iodemo.txt"); BufferedReader br=new BufferedReader(fi); String str=null; while(null!=(str=br.readLine())) { System.out.println(str); } br.close(); } }
打印出:(按行读)
大家好
明天来
吃火锅