流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
JAVA中IO流的分类
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
字符流和字节流:
字节流两个基类:
InputStream OutputStream
字符流两个基类:
Reader Writer
字节流和字符流的区别:
1,字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
2,处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
注意事项:字节流不能显示汉字,而字符流能够。
建议复制文本文件用字符流,复制其它格式的文件用字节流。
输入流和输出流
最常用的两大输入流:
read input
最常用的两在输出流:
writer output
注意事项:对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
1,InputStream
InputStream 是所有的输入字节流的父类,它是一个抽象类,其常用方法有:
int read(); 从输入流中读取数据的下一个字节。
int read(byte[] b); 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中。
int read(byte[] b, int off, int len); 将输入流中从off到len之间的数据字节读入b 数组中。
void close(); 关闭输入流。
在其已实现的子类中用得最多的是FileInputStream(直接子类)和BufferedInputStream(间接子类)等。
FileInputStream:从文件系统中的某个文件中获得输入字节,其常用方法有:
int read(); 从此输入流中读取一个数据字节。
int read(byte[] b);将输入流中读取到的数据存储到缓冲数组b中。
int read(byte[] b, int off, int len);将输入流中从off到len之间的数据字节读入到b数组中。
void close(); 关闭输入流。
BufferedInputStream缓冲输入流,即缓冲区,缓冲区的出现是为了提高流的操作效率而出现的,在创建缓冲区之前,必须要先有流对象。
其常用方法有:
int read(); 从输入流中读取数据的下一个字节
int read(byte[] b, int off, int len);将输入流中从off到len之间的数据字节读入到b数组中。
2,OutputStream
OutputStream 是所有的输出字节流的父类,它是一个抽象类,其常用方法有:
void write(int b); 将指定的字节写入此输出流中。
void write(byte[] b); 将数组b中的数据写入到此输出流中。
void flush();将流中数据强制刷新写出出来。
void close();关闭输出流。
在其已实现的子类中用得最多的是FileOutputStream(直接子类)和BufferedOutputStream(间接子类)等。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流,其常用方法有:
void write(int b);将指定的字节写入此输出流中。
void write(byte[] b); 将数组b中的数据写入到此输出流中。
void flush();将流中数据强制刷新写出出来。
void close();关闭输出流。
BufferedOutputStream是实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,
而不必针对每次字节写入调用底层系统。它能够提高流的操作效率而出现的,在创建缓冲区之前,必须要先有流对象。
3,Reader
Reader 是所有的输入字符流的父类,它是一个抽象类,其常用方法:
int read();读取单个字符。
int read(char[] cbuf); 将字符读入数组。
int read(char[] cbuf, int off, int len);将字符读入数组的某一部分。
void close();关闭输入流。
在其已实现的子类中用得最多的是FileReader(间接子类)和BufferedReader(直接子类)。
FileReader 用于读取字符流,其常用方法有从InputStreamReader继承过来的close();
和从Reader继承过来的read();
BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
其常用方法:
int read();读取单个字符。
int read(char[] cbuf, int off, int len);将字符读入数组的某一部分。
String readLine();读取一个文本行。
void close();关闭该流。
4,Writer
Writer 是所有的输出字符流的父类,它是一个抽象类。
其常用方法:
void write(int c); 写入单个字符。
void write(char[] cbuf); 写入字符数组。
void write(char[] cbuf, int off, int len); 写入字符数组的某一部分。
void flush(); 刷新该流的缓冲。
void close(); 关闭该流。
在其已实现的子类中用得最多的是 FileWriter(间接子类)和BufferedWriter(直接子类)。
FileWriter用于写入字符流。
其常用方法有从OutputStreamWriter继承的close(); flush();还有从Writer继承的writer();
BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
其常用方法:
void write(int c); 写入单个字符。
void write(String s, int off, int len); 写入字符串的某一部分。
void write(char[] cbuf, int off, int len); 写入字符数组的某一部分。
void flush(); 刷新该流的缓冲。
void close(); 关闭该流。
5,InputStreamReader
InputStreamReader:字节到字符的桥梁
6,OutputStreamWriter
OutputStreamWriter:字符到字节的桥梁
7,File
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的来操作文件和文件夹。
File类常见方法:
1,创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回fals
与输出流不一样,输出流对象一建立就创建文件,而且文件已经存在会覆盖
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹
2,删除
boolean delete():删除失败返回false,如果文件正在被使用,则删除不了返回false
void deleteOnExit():在程序退出时删除指定文件
3,判断
boolean exists():文件是否存在
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否是隐藏
isAbsolute():是否是绝对路径
4,获取信息
getName();获取名字
getPath();获取路径
getParent();//获取父目录 在绝对路径下获取父目录,否则返回是null
//如果相对路径中有上一层目录,那么该目录就是返回结果
getAbsolutePath();//获取绝对目录
long lastModified();//最后一次修改(返回时间)
long length();//长度(大小)
8,打印流
该流提供了打印方法,可以将各种数据类型的数据都原样打印
字节流打印
PrintStream
构造函数可以接收的参数类型:
1,file对象 File
2,字符串路径 String
3,字节输出流 OutputStream
字符流打印
PrintWriter
构造函数可以接收的参数类型:
1,file对象 File
2,字符串路径 String
3,字节输出流 OutputStream
4,字符输出流 Writer
JAVA中IO流的分类
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
字符流和字节流:
字节流两个基类:
InputStream OutputStream
字符流两个基类:
Reader Writer
字节流和字符流的区别:
1,字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
2,处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
注意事项:字节流不能显示汉字,而字符流能够。
建议复制文本文件用字符流,复制其它格式的文件用字节流。
输入流和输出流
最常用的两大输入流:
read input
最常用的两在输出流:
writer output
注意事项:对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
1,InputStream
InputStream 是所有的输入字节流的父类,它是一个抽象类,其常用方法有:
int read(); 从输入流中读取数据的下一个字节。
int read(byte[] b); 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中。
int read(byte[] b, int off, int len); 将输入流中从off到len之间的数据字节读入b 数组中。
void close(); 关闭输入流。
在其已实现的子类中用得最多的是FileInputStream(直接子类)和BufferedInputStream(间接子类)等。
FileInputStream:从文件系统中的某个文件中获得输入字节,其常用方法有:
int read(); 从此输入流中读取一个数据字节。
int read(byte[] b);将输入流中读取到的数据存储到缓冲数组b中。
int read(byte[] b, int off, int len);将输入流中从off到len之间的数据字节读入到b数组中。
void close(); 关闭输入流。
BufferedInputStream缓冲输入流,即缓冲区,缓冲区的出现是为了提高流的操作效率而出现的,在创建缓冲区之前,必须要先有流对象。
其常用方法有:
int read(); 从输入流中读取数据的下一个字节
int read(byte[] b, int off, int len);将输入流中从off到len之间的数据字节读入到b数组中。
2,OutputStream
OutputStream 是所有的输出字节流的父类,它是一个抽象类,其常用方法有:
void write(int b); 将指定的字节写入此输出流中。
void write(byte[] b); 将数组b中的数据写入到此输出流中。
void flush();将流中数据强制刷新写出出来。
void close();关闭输出流。
在其已实现的子类中用得最多的是FileOutputStream(直接子类)和BufferedOutputStream(间接子类)等。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流,其常用方法有:
void write(int b);将指定的字节写入此输出流中。
void write(byte[] b); 将数组b中的数据写入到此输出流中。
void flush();将流中数据强制刷新写出出来。
void close();关闭输出流。
BufferedOutputStream是实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,
而不必针对每次字节写入调用底层系统。它能够提高流的操作效率而出现的,在创建缓冲区之前,必须要先有流对象。
3,Reader
Reader 是所有的输入字符流的父类,它是一个抽象类,其常用方法:
int read();读取单个字符。
int read(char[] cbuf); 将字符读入数组。
int read(char[] cbuf, int off, int len);将字符读入数组的某一部分。
void close();关闭输入流。
在其已实现的子类中用得最多的是FileReader(间接子类)和BufferedReader(直接子类)。
FileReader 用于读取字符流,其常用方法有从InputStreamReader继承过来的close();
和从Reader继承过来的read();
BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
其常用方法:
int read();读取单个字符。
int read(char[] cbuf, int off, int len);将字符读入数组的某一部分。
String readLine();读取一个文本行。
void close();关闭该流。
4,Writer
Writer 是所有的输出字符流的父类,它是一个抽象类。
其常用方法:
void write(int c); 写入单个字符。
void write(char[] cbuf); 写入字符数组。
void write(char[] cbuf, int off, int len); 写入字符数组的某一部分。
void flush(); 刷新该流的缓冲。
void close(); 关闭该流。
在其已实现的子类中用得最多的是 FileWriter(间接子类)和BufferedWriter(直接子类)。
FileWriter用于写入字符流。
其常用方法有从OutputStreamWriter继承的close(); flush();还有从Writer继承的writer();
BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
其常用方法:
void write(int c); 写入单个字符。
void write(String s, int off, int len); 写入字符串的某一部分。
void write(char[] cbuf, int off, int len); 写入字符数组的某一部分。
void flush(); 刷新该流的缓冲。
void close(); 关闭该流。
5,InputStreamReader
InputStreamReader:字节到字符的桥梁
6,OutputStreamWriter
OutputStreamWriter:字符到字节的桥梁
7,File
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的来操作文件和文件夹。
File类常见方法:
1,创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回fals
与输出流不一样,输出流对象一建立就创建文件,而且文件已经存在会覆盖
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹
2,删除
boolean delete():删除失败返回false,如果文件正在被使用,则删除不了返回false
void deleteOnExit():在程序退出时删除指定文件
3,判断
boolean exists():文件是否存在
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否是隐藏
isAbsolute():是否是绝对路径
4,获取信息
getName();获取名字
getPath();获取路径
getParent();//获取父目录 在绝对路径下获取父目录,否则返回是null
//如果相对路径中有上一层目录,那么该目录就是返回结果
getAbsolutePath();//获取绝对目录
long lastModified();//最后一次修改(返回时间)
long length();//长度(大小)
8,打印流
该流提供了打印方法,可以将各种数据类型的数据都原样打印
字节流打印
PrintStream
构造函数可以接收的参数类型:
1,file对象 File
2,字符串路径 String
3,字节输出流 OutputStream
字符流打印
PrintWriter
构造函数可以接收的参数类型:
1,file对象 File
2,字符串路径 String
3,字节输出流 OutputStream
4,字符输出流 Writer