文章目录
前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下
字节流的操作都是基于
InputStream
和OutputStream
这两个抽象类
InputStream
是字节输入流,主要的功能是从文件中读取数据,它的子类有内存操作流ByteArrayInputStream
,管道输入流PipedInputStream
,和FileInputStream
OutputStream
是字节输出流,主要功能是向文件中写入数据,它的常用的子类有ByteArrayOutputStream
,FileOutputStream
,PipedOutputStream
,PrintStream
字符流的操作都是基于家
Writer
和Reader
这两个抽象类的,一个是输出流,一个是输入流
写入字符流的操作类,常用的子类有
PrintWriter
,BufferedWriter
,OutputStreamWriter
(字节流和字符流之间的桥梁)
用于读取字符流的抽象类,常用的子类有
BufferedReader
,InputStreamReader
BufferedReader
和BufferedWriter
PrintStream
,PrintWriter
这两个类都采用了格式化的输入和输出PrintStream
,PrintWriter
BufferedWriter
和PrintWriter
的结合,例子如下;File file=new File("/tmp"+File.separator+"test"+File.separator+"test.txt");
//用BufferedWriter实例化PrintWriter,显著提高写入的效率
PrintWriter printWriter=new PrintWriter(new BufferedWriter(new FileWriter(file)));
String name="陈加兵";
int age=22;
float grade=99.9f;
printWriter.printf("姓名:%s,年龄:%s,grade:%s",name,age,grade); //格式化的写入
printWriter.close();
BufferedReader
功能已经很强大了有时候在写程序的时候,你得到了一个字节流,但是你想要创建的却是字符流对象,怎么办了呢?前面已经说过,字节流转换成字符流对象的桥梁是InputStreamReader和InputStreamWiter他们的作用是传入字节流对象构造字符流对象,因此可以完美的实现字节流转换成字符流,这个是非常重要的
// 读取键盘的输入的数据,System.in是字节流,因此要想创建高效流必须使用转换流InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
//从键盘读取输入的数据,直到读到bye结束
while ((line = br.readLine()) != null) {
if ("bye".equals(line)) {
break;
}
System.out.println(line);
}