十七、File-IO流
1.I/O的概念和java.io包
(1)输入:外部源—>程序
输出:程序—>输出目标
外部源、输出目标:磁盘文件、网络连接、内存缓存等
(2)java程序通过流执行I/O
流是一种抽象,可以用来产生信息或者使用信息,可以通过java的I/O系统链接到物理设备
2.File类
可以表示一个文件,也可以表示一个路径/目录
(1)创建File对象
File对象描述了文件/目录本身的属性,用于获取和操作与磁盘文件/目录关联的信息
构造方法:
·File(String directoryPath)
·File(String directoryPath,String filename)
·File(File dirObj,String filename)
·File(URI uriObj)
(2)File类的常用方法
·boolean exists():File对象所表示的文件或目录是否存在
·String getName():获取文件名或文件夹名
·String getPath():将路径转换为字符串,并返回
·String getAbsolutePath():返回抽象路径名的绝对路径名字符串
·boolean isFile():判断File对象所表示的是否是一个标准文件
·boolean isDirectory():判断File对象所表示的是否是一个目录
·boolean createNewFile():创建新文件,如果目录不存在则异常
·boolean mkdir():只能创建一层目录
·boolean mkdirs():可以创建多层目录
·boolean delete():删除文件或文件夹
3.流
(1)流的分类
流的方向:
·输入流
·输出流
处理数据单位的方式:
·字节流(8位)
·字符流(16位)
功能:
·节点流:从一个特定的数据源(节点)读写数据的流
·处理流:通过对数据的处理位程序提供更为强大的读写功能
(2)IO流结构图
红色边框的流为常用的流
4.字节流
字节输入流InputStream主要方法
(1)read()
从此输入流中读取一个数据字节
(2)read(byte[] b)
从此输入流中将最多b.length个字节的数据读入一个byte数组中
(3)read(byte[] b, int off, int len)
从此输入流中将最多len个字节的数据读入一个byte数组中
(4)close()
关闭此输入流并释放与该流关联的所有系统资源
字节输出流OutputStream主要方法
(1)write(byte[] b)
将b.length个字节从指定byte数组写入此文件输出流中
(2)write(byte[] b, int off, int len)
将指定byte数组中从偏移量off开始的len个字节写入此文件输出流
(3)write(int b)
将指定字节写入此文件输出流
(4)close()
关闭此输入流并释放与该流关联的所有系统资源
5.字符流
字符输入流Reader主要方法
(1)read()
读取单个字符
(2)read(char[] cbuf)
将字符读入数组
(3)read(char[] cbuf, int off, int len)
将字符读入数组的某一部分
(4)read(CharBuffer target)
试图将字符读入指定的字符缓冲区
(5)flush()
刷新该流的缓冲
(6)close()
关闭此流,但要先刷新它
字符输出流Writer主要方法
(1)write(char[] cbuf)
写入字符数组
(2)write(char[] cbuf, int off, int len)
写入字符数组的某一部分
(3)write(int c)
写入单个字符
(4)write(String str)
写入字符串
(5)write(String str, int off, int len)
写入字符串的某一部分
flush() :刷新该流的缓冲。
close() :关闭此流,但要先刷新它
6.转换流
(1)InputStreamReader
将字节输入流转换成字符输入流
FileInputStream fileInputStream=new FileInputStream(file);
Reader reader=new InputStreamReader(fileInputStream,”UTF-8”) 字节编码
InputStreamReader继承了Reader
(2)OutputStreamReader
将字节输出流转换成字符输出流
FileOutputStream fileOutputStream=new FileOutputStream(file);
Writer writer=new OutputStreamWriter(fileOutputStream);
OutputStreamWriter继承了Writer
7.缓冲流
(1)字节缓冲流
BufferedInputStream、BufferedOutputStream
(2)字符缓冲流
BufferedWriter、BufferedReader
8.打印流
PrintWriter