java io流

在java程序中,对于数据的输入/输出的操作以“流”(stream)方式进行;
输入/输出流的分类
java.io包中定义了多个流类型(类或抽象类)来实现输入/输出流功能:可以从不同的角度对其进行分类:
1.按数据流的方向不同可以分为输入流和输出流(站在程序的角度上)。
1.输入流:文件向程序输入
2.输出流:程序向文件输出
2.按处理数据单位不同可以分为字节流和字符流。
1.字节流:输出1位字节
2.字符流:按字符输出(2)个字节
3.按照功能不同可以分为节点流和处理流。
1.节点流:节点流可以从一个特定的数据源(节点)读写数据(如:文件,内存)
2.处理流:处理流是“连接”在以存在的流(节点流或者处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
J2SDK所有流位于java.io内都分别继承以下四种抽象类型:
 
字节流
字符流
输入流
InputStream
Reader
输出流
OutputStream
Writer
输入流(InputStream):
继承自InputStream的流都是用于向程序中输入数据,且数据为8Bit
节点流:
FileInputStream
PipedInputStream
ByteArrayInputStream
StringBufferInputStream
处理流:
FilterInputStream
1.LineNumberInputStream
2.DataInputStream
3.BufferedInputStream
4.PushBackInputStream
SequenceInputStream
ObjectInputStream
InputStream基本方法
//读取一个字节并以整数的形式返回(0-255)
//如果返回-1已到输入流的末尾
int read() throws IOException

//读取一系列字节并存储到一个数组buffer
//返回实际读取的字节数,如果读取前已到输入流的末尾返回-1
int read(byte[] buffer) throws IOException

//读取length个字节
//并存储到一个直接数组buffer,从length位置开始
//返回实际读取的字节数,如果读取前已到输入流末尾返回-1
int read(byte[] buffer,int offset,int length) throws IOException

//关闭流释放内存资源
void close() throws IOExcption

//跳过n个字节不读,返回实际跳过的字节数
long skip(long n) throws IOExcption
输出流(OutputStream)
继承自OutputStream的流是用于程序中输入数据,字节8Bit
字节流:
FileOutputStream
PipedOutputStream
ByteArrayOutputStream
处理流:
FilterOutputStream
1.DataOutputStream
2.BufferedOutputStream
3.PrintStream
ObjectOutputStream
OutputStream基本方法
//向输入流中写一个字节数据,该字节数据为参数b的低8位
void write(int b) throws IOException

//将一个字节类型的数组中的数据写入流
void write(byte[] b) throws IOException

//将一个字节类型的数组中的从指定位置(off)开始
//len个字节写入到输出流
void write(byte[] b,int off,int len) throws IOException

//关闭流释放内存资源
void close() throws IOException

//将输出流中缓存的数据全部写出到目的地
void flush() throws IOException
先使用flush()在调用close()
输入字符流(Reader)
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符16bit;
节点流:
CharArrayReader
PipedReader
StringReader
处理流:
BufferedReader
LinNumberReader
InputStreamReader
FileReader
FilterReader
PushbackReader
Reader基本方法
//读取一个字符并以整数的形式返回(0-255)
//如果返回-1已到输入流的末尾
int read() throws IOException

//读取一系列的字符并存储到一个数组buffer
//返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
int read(char[] cbuf) throws IOException

//读取length个字符
//并存储到一个数组buffer,从offset位置开始
//返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
int read(char[] cbuf,int offset,int length) thrwos IOException

//关闭释放内存资源
void close() throws IOException

//跳过n个字符不读,返回实际跳过的字节数
long skip(long n) throws IOException
输出字符流(Writer)
继承自Writer的流都是用于程序中输出数据,单位字符16Bit
节点流
CharArrayWriter
PipedWriter
StringWriter
处理流
BufferedWriter
OutputStreamReader
FileWriter
FilterWriter
Writer基本方法
//将输出流写入一个字符数据,改字节数据为参数b的低16位
void write(int c) throws IOException

//将一个字符类型的数组中的数据写入输出流
void write(char[] cbuf) throws IOException

//将一个字符类型的数组中的从指定位置(offset)开始的
//length个字符写入到输出流
void write(char[] cbuf,int offset,int length) throws IOException

//将一个字符串中的字符写入到输出流
void write(String string) throws IOException

//将一个字符串从offset开始的length个字符写入到输出流
void write(String string,int offset,int lengt) throws IOException

//关闭释放资源
void close() throws IOException

//将输出流中的缓冲数据全部写出到目的地
void flush() throws IOException

节点流
类型
字符流
字节流
File(文件)
FileReader,FileWriter
FileInputStream,FileOutputStream
Memory Array(内存 数组)
CharArrayReader,CharArrayWriter
ByteArrayInputStream,ByteArrayOutputStream
Memory String(内存 字符串)
StringReader,StringWriter
 
Pipe(管道,线程于线程)
PipedReader,PipedWriter
PipedInputStream,PipedOutputStream

处理流(包在别的流上的流)
类型
字符流
字节流
Buffering(缓冲)
BufferedReader,BufferedWriter
BufferedInputStream,BufferedOutputStream
Filtering(过滤)
FilterReader,FilterWriter
FilterInputStream,FilterOutputStream
Converting between bytes and character(字节与字符之间的转换)
InputStreamReader,OutputStreamWriter
-
Object Serialization(对象序列化)
-
ObjectInputStream,ObjectOutputStream
Data conversion(数据转换)
-
DataInputStream,DataOutputStream
Counting(计数)
LineNumberReader
LineNumberInputStream
Peeking ahead(窥视前方)
PusbackReader
PushbackInputStream
Printing(印刷)
PrintWriter
PrintStream
缓冲流(Buffering):
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的高效。
构造方法
BufferedReader(Reader in)
BufferedReader(Reader in,int sz) //sz为自定义缓冲区大小
BufferedWriter(Writer out)
BufferedWriter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int sz)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int sz);
1.缓冲输入流支持其父类的mark和reset方法
mark:标记,从标记的位置开始读取
reset:回到标记位置重新读取
2.bufferedReader提供了readLine方法用于读取一行字符串(以\r或\n分割)
3.bufferedWriter提供了newLine用于写入一个分隔符行
4.对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
转换流(字节与字符之间的转换):
1.InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换。
2.InputStreamReader,OutputStreamWriter需要InputStream,OutputStream套接。
3.转换流在构造时可以指定其编码集合,如:
InputStream is=new InputStreamReader(System.in,"UTF-8");
数据流( Data conversion
1.DatainputStream和DataOutputStream分别继承自InputStream和OutputStream,分别套接在InputStream和OutputStream节点流上。
2.DataInputStream和DataOutputStream提供了可以存取与机器无关的java原始类型数据(如:int,double)方法;
3.构造函数:
DataInputStream(InputStream in)
DataOutputStream(OutputStream out)
ByteArrayInputStream/ByteArrayOutputStream
声明一个ByteArray内存空间,输入输出。
Print流(打印)
1.PrintWriter和PrintStream都输入输出流,字符和字节
2.PrintWriter和PrintStream提供了重载的print
3.Println方法用于多种数据类型的输出。
4.PrintWriter和PrintStream的输出不会抛出异常,用户通过检查错误状态获取错误信息
5.PrintWriter和PrintStream有自动flush功能
构造方法:
PrintWriter(writer out)
PrintWriter(Writer out,boolean autoFlush)
PrintWriter(OutputStream out)
PrintWriter(OutputStream out,autoFlush)
PrintStream(OutputStream out)
PrintStream(OutputStream out,booleanautoFlush)
Object流(直接将Objcet写入或读出)
1.transient关键字:序列化时不进行写入
2.serializable接口:将文件转换为二进制
3.externalizable接口:自己实现序列化过程






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值