1. IO分类:
输入流 输出流
字节流 InputStream(抽象类) OutputStream(抽象类
字符流 Reader (抽象类) Writer(抽象类)
2.字节流:
使用场景:
1.字节流处理除了文本、文字相关所有的流问题
2.字符流只处理文本、文字相关
1.输入流 abstract class InputStream:这个抽象类是表示输入字节流的所有类的超类。
FileInputStream 子类:文件字节输入流
1. 构造方法
FileInputStream(String name) name:表示(绝对路径、相对路径)文件名
FileInputStream(File file)
2. 普通方法:
1. int read(byte[] b) 从输入流读取一些字节数,并将它们存储到缓冲区 b 。
2. int read() 从输入流读取数据的下一个字节。
3. int read(byte[] b, int off, int len) 从输入流读取最多 len字节的数据到一个字节数组。
2.输出流 abstract class OutputStream:这个抽象类是表示输出字节流的所有类的超类。
FileOutputStream 子类:文件字节输出流
1. 构造方法
FileOutputStream(String name) name:表示(绝对路径、相对路径)文件名
FileOutputStream(String name, boolean append)
append:表示是否在该文件末尾追加数据,如果为true,表示追加,false,表示从头开始覆盖
FileOutputStream(File file)
FileOutputStream(File file, boolean append)
2. 普通方法:
1. void write(byte[] b, int off, int len) 将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。 最常用
2. void write(byte[] b)将 b.length个字节从指定的字节数组写入此文件输出流。
3. void write(int b) 将指定的字节写入此文件输出流。
3. 注意事项:
1. 必须要关闭IO流,节约资源开销
2. 关闭IO流原则,先开后关
3. 字符流:
使用场景:使用于处理文本相关的数据。
Reader 抽象类:
子类
InputStreamReader
子类
FileReader:适用于读取字符相关的文件
1. 构造方法:
1.FileReader(File file)
2.FileReader(String fileName) fileName:文件名(相对路径/绝对路径)
2. 读取方法:
3. int read(char[] c)读取字符到char数组中
2. int read()读取一个字符
3. int read(char[] c,int start,int length)读取制定长度的字符到char数组中
Writer 抽象类:
子类
OutputStreamWriter(转换流)
子类
FileWriter:适用于写出字符相关的文件
1. 构造方法:
1.FileWriter(File file) 默认是false
2.FileWriter(File file, boolean append)
append:表示是在文件末尾追加还是从头覆盖,如果true追加,false覆盖,默认是false
3.FileWriter(String fileName) 默认是false
4.FileWriter(String fileName, boolean append)
fileName:文件名(相对路径/绝对路径)
4. 转换流:目前唯一一个可以设置字符集的流
使用场景:
别人给提供了字节流,而需要处理文本数据,这时候,就需要用转换流转换一下,更方便处理文本数据
作用:就是一字符流的方式读取或写出文本相关的数据
InputStreamReader:将字节输入流包装一下,让其更适合读取文本文件
构造方法:
1.InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
2.InputStreamReader(InputStream in, String charsetName)
创建一个使用指定字符集的InputStreamReader。
普通方法:
public int read(char[] cbuf)
int read(char[] cbuf, int offset, int length)
OutputStreamWriter:将字节输出流包装一下,让其更适合写出文本文件
构造方法:
1. OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
2. OutputStreamWriter(OutputStream out, String charsetName)
创建一个使用指定字符集的OutputStreamWriter。
普通方法:
void write(char[] cbuf, int off, int len)
append(CharSequence csq,int start,int end)
5. 缓冲流:
使用场景:以后一律都要使用,以提高效率 建议以后都是用字节或者字符数组的方式复制文件,这样效率最高
BufferedInputStream
字节输入缓冲流构造方法:
1.BufferedInputStream(InputStream in) 创建一个默认缓冲区大小的缓冲流
2.BufferedInputStream(InputStream in, int size)创建一个指定缓冲区大小的缓冲流
BufferedOutputStream
字节输出缓冲流构造方法:
1.BufferedOutputStream(OutputStream out)
2.BufferedOutputStream(OutputStream out, int size)
BufferedReader
字符输入缓冲流构造方法:
1.BufferedReader(Reader in) 创建一个默认缓冲区大小的缓冲流
2.BufferedReader(Reader in, int size) 创建一个指定缓冲区大小的缓冲流
特殊的读取方法,其他读取方法跟字符流一样:
String readLine()读取一行字符串
BufferedWriter
字符输出缓冲流构造方法:
1.BufferedWriter(Writer out)
2.BufferedWriter(Writer out, int size)
特殊的写出方法,其他写出方法跟字符流一样:
writer(String str)
newLine()写出一个换行符
6. 随机访问文件类RandomAccessFile:
1. 概念:支持随机访问文件内容和随机读取文件内容
2. 作用:
1.断点续传
2.判断空间是否充足,占用空间
3.多线程上传下载
3. 使用:
1. 构造方法:
1.RandomAccessFile(String name, String mode)
创建随机访问文件流,以从中指定名称的文件读取,并可选择写入文件。
mode - 访问模式:"r"只读 ,"rw"读写 "rws",或 "rwd"
2.RandomAccessFile(File file, String mode)
创建一个随机访问文件流从File参数指定的文件中读取,并可选地写入文件。
2. 常用方法:
1. long getFilePointer() 返回此文件中的当前文件的指针位置,不管是读取或写出,指针都会移动位置
配合seek方法,做断点续传功能
2. void seek(long pos)
设置文件指针位置,从该文件的开头测量,发生下一次读取或写入。
配合getFilePointer方法,做断点续传功能
3. long length() 返回此文件的大小。
4. void setLength(long newLength)设置此文件的大小。
通常用来设置临时文件的大小,以便占用空间
5. int read(byte[] b) 从该文件读取最多 len个字节的数据到字节数组。
6. void write(byte[] b, int off, int len)
从指定的字节数组写入 len个字节,从偏移量 off开始写入此文件。
7. String readLine() 从此文件中读取下一行文本。
8. void writeBytes(String s)
将字符串作为字节序列写入文件。