Java基础之IO流的操作
1.基本概念
1.1 流的概念
流是一组有顺序的,有起点和终点的字节集合。
1.2:IO:
Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。
2. 流的分类
按处理数据的类型分为字节流和字符流
按数据流向分为输入流和输出流
字节流和字符流的区别
字节流一次只读取一个字节,字符流一次读取一个字符(一个字符包含多个字节)。字节流可以所有类型的数据,而字符流只能处理字符类型的数据(如文本文件)
字节流
InputStream,抽象了应用程序读取数据的方式
OutputStream ,抽象了应用程序写出数据的方式
3. 流的方法
3.1输入流的基本方法
InputStream in = new InputStream();
int b = in.read();
3.2输出流的基本方法
OutputStream out = new OutputStream();
out.write(int b);
3.3字节流的实现类
文件输入输出流 FileInputStream FileOutputStream
数据输入输出流 DataInputStream DataOutputStream
加了一些方法如writeInt(),writeLong()等等,普通的流只有writre(),即只能写入字节
字节缓冲流
BufferedInputStream BufferedOutputStream
3.4字符流
Reader,读取字符的抽象基类 Writer,写入字符的抽象基类
3.5字符流的实现类
InputStreamReader,完成byte流解析为char流,按照编码解OutputStreamReader,提供char流到byte流,按照编码处理
3.6文件的读写
FileReader/FileWriter 读取单位char或者string
3.7字符缓冲流
BufferedReader BufferedWriter
4.file类
4.1 File的构造器
File(String pathname) :通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(File parent, String child) :根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child) :根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri) : 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
4.2 File常用方法
4.2.1.获取该类的相关信息:
(1)getAbsoluteFile() :返回此抽象路径名的绝对路径名形式。
(2)getAbsolutePath() :返回此抽象路径名的绝对路径名字符串。
(3)getCanonicalFile():返回此抽象路径名的规范形式。
(4)getCanonicalPath():返回此抽象路径名的规范路径名字符串
(5)getName():返回由此抽象路径名表示的文件或目录的名称。
(6)getPath():将此抽象路径名转换为一个路径名字符串。
(7)getParent() :返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
(8)getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
(9)length():返回由此抽象路径名表示的文件的长度。
4.2.3 新建和删除
a) (boolean) createNewFile:当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
(1)(boolean)delete():删除此抽象路径名表示的文件或目录。
(2)(boolean)exists():测试此抽象路径名表示的文件或目录是否存在。
(3) (boolean)isDirectory():测试此抽象路径名表示的文件是否是一个目录。
(4)(boolean) isFile(): 测试此抽象路径名表示的文件是否是一个标准文件。
(5)(boolean)mkdir():创建此抽象路径名指定的目录。
(6)(boolean)mkdirs(): 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
4.2.4文件的获取
(1)(String[])list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
(2)(File[])listFile():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
5.字节流
5.1.字节流基类
InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。
OutputStream:字节输出流基类,抽象类是表示输出字节流的所有类的超类。
5.2字节文件操作流
FileInputStream:字节文件输入流,从文件系统中的某个文件中获得输入字节,用于读取诸如图像数据之类的原始字节流。
FileOutputStream:字节文件输出流是用于将数据写入到File,从程序中写入到其他位置。
5.3字节缓冲流(高效流)
BufferedInputStream:字节缓冲输入流,提高了读取效率。
BufferedOutputStream:字节缓冲输出流,提高了写出效率。
6.字符流
6.1字符流基类
Reader:读取字符流的抽象类.
Writer:写入字符流的抽象类.
6.2.字符转换流
InputStreamReader:字节流转字符流,它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
OutputStreamWriter:字节流转字符流。
6.3字符缓冲流(高效流)
BufferedReader:字符缓冲流,从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
BufferedWriter:字符缓冲流,将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
6.4.FileReader、FileWriter