1、分类
按方向分:输入流、输出流
按处理数据单位分:字节流、字符流
按处理方式分:节点流、处理流(不直接连接到数据源或目的地,是"处理流的流"。通过对其他流的处理处理提高程序的性能)
IO的四大基类(抽象类):InputStream、OutputStream、Reader、Writer
2、选择
字节流可以读取任何文件
读取文本的时候:选择字符流(加入有解析文件的内容需求,比如逐行处理,采用字符流比如txt文件)
读取二进制文件的时候,选择字符流(视频、音频、图片)
3、常用的节点流
父类: InputStream OutputStream Reader Writer
常用方法:
- int read(); 读取一个字节的数据,并将字节的值作为int类型返回(字节流(0-255之间的一个值) 字符流(0-65535)),返回值为-1表示读取结束
- void write(int n):向目的地中写入一个字节
- void close():关闭流对象,释放相关系统资源
文件: FileInputStream FileOutputStream FileReader FileWriter
4、处理流
缓冲流:BufferInputStream BufferOutputStream 增加缓存功能,提高读写效率
public class BufferInputStream {
public static void main(String[] args){
File file = new File("D:/qqq.txt");
InputStream InputStream = null;
try {
InputStream = new BufferedInputStream(new FileInputStream(file));
byte[] b = new byte[1024];
int len = 0;
if ((len = InputStream.read(b)) != -1) {
String str = new String(b, 0, len);
System.out.println(str);
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(InputStream!=null){
try {
InputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
}
public class BufferOutputStream {
public static void main(String[] args) {
File src = new File("D:/ddd.txt");
OutputStream outputStream = null;
try {
outputStream = new BufferedOutputStream(new FileOutputStream(src));
String msg = "wuhu起飞qqqqqqqqqqqqq";
byte[] bytes = msg.getBytes();
outputStream.write(bytes,0,bytes.length);
}catch (Exception e){
e.printStackTrace();
}finally {
if(outputStream!=null){
try {
outputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}