====================================================================================
JAVA IO流(InputStream,OutputStream)
流按照单位划分为两种:
字节流:以字节为单位读写
字符流:以字符为单位读写
字节流:
InputStream 字节输入流,是抽象类,抽象了应用程序的[读取]数据方式
OutputStream 字节输出流,是抽象类,抽象了应用程序的[写出]数据方式
字节流与字符流在类名上就容易区分
字符输入流以Reader结尾,字符输出流一Writer结尾
=======================================================================================
FileInputStream 文件字节输入流
FileInputStream继承自InputStream,具体实现了对文件的读取数据
FileOutputStream 文件输出流
FileOutputStream继承OutputStream,具体实现了向文件中写数据
=======================================================================================
流分为: 高级流和低级流
低级流:又称为节点流,明确数据源
不同的单位区分为:字节流和字符流
高级流:称为处理流,过滤流.不能独立存在,而是要依托一个低级流,在低级流的基础上对读写操作进行封装处理的流
判断是否为高级流:
特征是看这个流的构造方法中是否有包含一个流为参数,若有,这个流就是高级流
DataOutputStream与DataInputStream
数据字节输出/输入流
BufferedInputStream与BufferedOutputStream
缓冲字节输入/输出流
优点:读写效率高
=========================================================================================
字符流(Reader and Writer)(高级流)
字符流以字符(unicode编码)为单位读写数据.
本质:还是要转换为字节流(字符流底层依然使用字节形式读写)
字节流的基本实现:
InputStreamReader:完成byte解析为char的流,按照编码解析
OutputStreamWrite:完成从char编码为byte的流,按照编码解析
如:
FileInputStream fis=new FileInputStream("Linux.txt");
/**
* 构造方法:
* InputStreamReader(InputStream in):以系统默认字符集读取字节流中的字节,并解析字符
* InputStreamReaser(InputStream in,String charset)
* 以给定的字符集编码读取字节流中的字节,并解析字符(可以防止乱码问题)
*/
InputStreamReader reader=new InputStreamReader(fis,"UTF-8");
BufferedReader:缓冲字符输入流
PrintWriter:缓冲字符输出流
注意:
对于所有的缓冲输出流,无论是字节流还是字符流都应注意,在所有写操作完成以后,在关闭流之前,应调用流的flush()
方法,清空缓冲流区(将缓冲区内容全部写出),否则可能会发生数据写出不完整!
==========================================================================================
若读取的内容是纯文本内容,使用字符流,否则尽量使用字节流
JAVA IO流(InputStream,OutputStream)
流按照单位划分为两种:
字节流:以字节为单位读写
字符流:以字符为单位读写
字节流:
InputStream 字节输入流,是抽象类,抽象了应用程序的[读取]数据方式
OutputStream 字节输出流,是抽象类,抽象了应用程序的[写出]数据方式
字节流与字符流在类名上就容易区分
字符输入流以Reader结尾,字符输出流一Writer结尾
=======================================================================================
FileInputStream 文件字节输入流
FileInputStream继承自InputStream,具体实现了对文件的读取数据
FileOutputStream 文件输出流
FileOutputStream继承OutputStream,具体实现了向文件中写数据
=======================================================================================
流分为: 高级流和低级流
低级流:又称为节点流,明确数据源
不同的单位区分为:字节流和字符流
高级流:称为处理流,过滤流.不能独立存在,而是要依托一个低级流,在低级流的基础上对读写操作进行封装处理的流
判断是否为高级流:
特征是看这个流的构造方法中是否有包含一个流为参数,若有,这个流就是高级流
DataOutputStream与DataInputStream
数据字节输出/输入流
BufferedInputStream与BufferedOutputStream
缓冲字节输入/输出流
优点:读写效率高
=========================================================================================
字符流(Reader and Writer)(高级流)
字符流以字符(unicode编码)为单位读写数据.
本质:还是要转换为字节流(字符流底层依然使用字节形式读写)
字节流的基本实现:
InputStreamReader:完成byte解析为char的流,按照编码解析
OutputStreamWrite:完成从char编码为byte的流,按照编码解析
如:
FileInputStream fis=new FileInputStream("Linux.txt");
/**
* 构造方法:
* InputStreamReader(InputStream in):以系统默认字符集读取字节流中的字节,并解析字符
* InputStreamReaser(InputStream in,String charset)
* 以给定的字符集编码读取字节流中的字节,并解析字符(可以防止乱码问题)
*/
InputStreamReader reader=new InputStreamReader(fis,"UTF-8");
BufferedReader:缓冲字符输入流
PrintWriter:缓冲字符输出流
注意:
对于所有的缓冲输出流,无论是字节流还是字符流都应注意,在所有写操作完成以后,在关闭流之前,应调用流的flush()
方法,清空缓冲流区(将缓冲区内容全部写出),否则可能会发生数据写出不完整!
==========================================================================================
若读取的内容是纯文本内容,使用字符流,否则尽量使用字节流