1、IO流,什么是IO?
I:Input
O:Output
通过IO可以完成硬盘文件的读和写。
2、IO流的分类?
有多种分类方式:
一种方式是按照流的方向进行分类:
以内存为参照物,
往内存中去,叫做输入,或者叫读。
从内存中出来,叫做输出,或者叫写。
另一种方式是按照读取数据方式不同进行分类:
有的流是按照字节的方式读取数据,一次读取一个字节byte,等同于一次读取8个二进制
以Stream结尾的流全部为字节流
以Writer/Reader结尾的流全部为字符流
缓冲流
BufferedReader
public class BufferReaderTest01
{
public static void main(String[] args) throws IOException
{
FileReader reader=new FileReader("");
// 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。
// 外部负责包装的这个流,叫做:包装流,还有一个名字叫:处理流。
BufferedReader br=new BufferedReader(reader);
//br.readLine()方法读取一个文本行,但不带换行符。
String s=null;
while ((s=br.readLine())!=null)
{
System.out.println(s);
}
//关闭流
//对于包装类来说,只需要关闭最外层流就行,里面的节点流会自动关闭(通过查看源代码)
br.close();
}
}
转换流
InputStreamReader
public class BufferedReaderTest02
{
public static void main(String[] args) throws IOException
{
//字节流
FileInputStream in=new FileInputStream("D:\\draft");
//通过转换流转换(InputStreamReader将字节流转换成字符流)
//in是节点流,reader是包装流
InputStreamReader reader=new InputStreamReader(in);
//这个构造方法只能传一个字符流,不能传字节流
//reader是节点流,br是包装流
BufferedReader br=new BufferedReader(reader);
//以上三行代码可以嵌套使用
//BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("D:\\draft")));
String line=null;
while ((line=br.readLine())!=null)
{
System.out.println(line);
}
//关闭最外层
br.close();
}
}