黑马程序员-Java 字符流的使用简明
来源:互联网 发布:微信公众号java源码 编辑:程序博客网 时间:2024/06/05 02:04
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
字符流
Writer
—OutputStreamWriter
—BufferedWriter
—FileWriter
Reader
—InputStreamReader
—BufferedReader
—FileReader
JAVA中流的概念,是一个挺抽象的概念。通俗的理解可以是,一条水管,水管的一头连接水的源头和另一端连接目的地,这样水就可以流向目的地了。在计算机中,源头和目的可以是计算机中的内存,硬盘中的文件,网络上的设备等。
JAVA中对流的操作分了两类:字节流和字符流。对应这4个抽象类,字符流的Writer、Reader,字节流的 InputStream 、OutputStream。Writer子类下面有两个比较常用的InputStreamReader和BuferedReader,InputStreamReader类实现字节流通向字符流。BufferedReader是加入了缓冲区的字符类,效率更高了。
Writer
Writer是一个写入字符流的抽象类,子类OutputStreamWriter实现了字符流转向字节流。OutputStreamWriter有一个用于写入文件的便捷类FileWriter,FileWriter的构造函数参数是一个要写入数据的文件,如果文件不存在或无法打开会抛出IOException异常。
public Demo{ public static void main(String[]args)throws IOException { FileWriter fw = new FileWriter("demo.txt"); fw.write("hello,heima"); fw.close(); }}
通过write方法向缓冲区写入数据FileWriter的write方法有如下几种:
write()
write(char[]buf)
write(String str)
write(String str,int index,int len)
write(char[]buf,int index,int len)
Reader
读取字符流的抽象类,该类的read()方法一次读取一个字符。如同Writer类一样,该类也有一个用于将字节流转换成字符流的子类:InputStreamReader,可以使用charset指定字符集或使用默认编码将字节流解码为字符。InputStreamReader有一个子类对应OutputStream的FileWriter,FileReader类。用于读取字符文件的便捷类。
import java.io.*;class WriterDemo{ public static void main(String[] args)throws IOException { FileReader fr = new FileReader("demo_text.txt"); FileWriter fw = new FileWriter("demo.txt"); int ch = 0; while((ch = fr.read())!= -1) { fw.write(ch); } fw.close(); }}
FileReader的read()方法,一次读取一个字符,读到末尾返回-1。在Window系统中换行是用’\r’,’\n’两个字符连在一起表示的。
BufferedReader类
实现高效的读取的类,从字符输入流中读取文本,并缓冲起来。
该类提供了一个readLine()方法,一次读取一个字符,直到读取完一行后返回字符串。
FileReader fr = new FileReader("demo_text.txt"); BufferedReader bfr = new BufferedReader(fr); String line = null; while((line = bfr.readLine())!=null) { System.out.println(line); }
BufferedWriter类
缓冲字符流后写入字符流。默认缓冲区大小8*1024B。将一次性读取默认缓冲区大小的数据到缓冲区。后面调用write()是对缓冲区中的数据进行写入,需要自己手动进行调用flush()刷新。该类还提供了一个newLine()方法,提供所在系统自己的换行符概念。如在windows系统中是\r \n。而在linux系统中是\n。
FileReader fr = new FileReader("demo_text.txt"); FileWriter fw = new FileWriter("demo.txt"); BufferedReader bfr = new BufferedReader(fr); BufferedWriter bfw = new BufferedWriter(fw); String line = null; while((line = bfr.readLine())!=null) { bfw.write(line); bfw.newLine(); bfw.flush(); } bfr.close(); bfw.close();
InputStreamReader
使用指定的字符集解析读取的字节,一般使用为了提高效率,会把InputStreamReader对象包含在BufferedReader中,如:BufferedReader(new InputStreamReader(System.in);使用控制台输入来构建inputStreamReader对象后传给BbufferedReader构建对象。然后就像对待字符流一样对待键盘录入的字节流了。
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String line = null; line = buf.readLine(); System.out.println(line);
OutputStreamWriter
是字符流转换成字节流的类,每次调用write都会调用编码转换器,所以,将OutputStreamWriter包装到BufferedWriter中可以避免频繁调用编码转换器。
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));BufferedWriter buw =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\test_demo.txt"))); String line = null; while((line = buf.readLine())!=null) { if("886".equals(line)) break; buw.write(line); buw.newLine(); buw.flush(); } buf.close(); buw.close();
读取键盘录入的内容后写入D盘的test_demo.txt文件。
- 黑马程序员-Java 字符流的使用简明
- 黑马程序员_关于java的转义字符的使用
- 黑马程序员--java基础------字符流的缓冲区
- 黑马程序员-java基础 io字符流
- 黑马程序员java学习,IO字符流
- 黑马程序员-JAVA-I/O-字符流
- 黑马程序员--java基础:字符IO流
- 黑马程序员-字符流
- 黑马程序员--字符流
- 黑马程序员_字符流的缓冲区
- 黑马程序员-转换流的字符编码
- 黑马程序员-java中输入流的使用
- 黑马程序员-java中static的使用
- 黑马程序员-java中继承的使用
- 黑马程序员-java中this的使用
- 黑马程序员 java Lock的使用
- 黑马程序员-java TreeSet的使用
- 黑马程序员-------Java内部类的使用
- wamp安装出现的问题
- 下载spring地址
- R-Dcost
- CSDN-markdown编辑器使用
- get和load的区别
- 黑马程序员-Java 字符流的使用简明
- 第3周项目4考了语文数学的学生
- C++ 类中的静态成员
- 第3周项目5数组作数据成员
- BNU hnust训练赛 J特殊运算
- 分块算法学习记录
- Windows8访问Mac OS X共享文件
- 数据结构知识框架图
- 2015NCHU第一届ACM新生选拔赛赛题说明