JAVA中的IO流
来源:互联网 发布:js动态控制div的边框 编辑:程序博客网 时间:2024/06/06 02:06
流的概念
JAVA程序中处理外部文件的方式,读写文件的方法。
流的分类
1:输入流和输出流(流的方向)
输入流:InputStream抽象类;Reader抽象类
输出流:OutputStream抽象类;Writer抽象类
2:字节流和字符流(单位处理的数据大小)
字节流:InputStream抽象类;OutputStream抽象类
字符流:Reader抽象类;Writer抽象类
3:节点流和处理接(功能的不同)
节点流为可以从一个特定的数据源(也叫节点)读写数据处理流是“连接”在已经存在的流上,通过对数据的处理为程序提供更强大的读写功能。
字符流
字节流
输出流
Writer
OutputStream
输入流
Reader
InputStream
InputSream抽象类的基本方法
int read()//读取一个字节以整数返回
int read(byte[] buffer)
int read(byte[] buffer,int offset,int length)
void close()
OutpurStream抽象类的基本方法
void write(int b)
void write(byte[] buffer)
void write(buye[] buffer,int offset,int length)
void flush()//向文件中写入缓冲区所有数据(清空输出)
void close()//关闭流
Reader抽象类的基本方法
int read()//读取一个字符以整数的形式返回
int read(char [] cbuf)
int read(char [] cbuf,int offset,int length)
void close()
Writer抽象类的基本方法
void write(int b)
void write(byte[] buffer)
void write(buye[] buffer,int offset,int length)
void write(String string)
void write(String string,int offset,int length)
void flush()//向文件中写入缓冲区所有数据(清空输出)
void close()//关闭流
节点流类型
类型
字符流(两个字节)
字节流
File(文件流)
FileReader
FileWriter
FileInputStream
FileOutPutStream
Memory Array(内存数组流)
CharArrayReader
CharArrayWriter
ByteArrayInputStream
ByteArrayOutputStream
Memory String(内存字符串流)
StringReader
StringWriter
NO
Pipe(管道)(线程间的通信)
PipedReader
PipedWriter
PipedInputStream
PipedOutputStream
处理流
处理类型
字符流
字节流
Buffering(缓冲流)
BufferedReader
BufferedWriter
BufferedInputStream
BufferedOutputStream
Filetering(过滤流)
FilterReader
FilterWriter
FilterInputStream
FilterOutputStream
Converting between bytes and
Character(转换流)
InputStreamReader
OutputStreamWriter
NO
Object Serialization(可序列化)
NO
ObjectInputStream
ObjectOutputStream
Data conversion(数据流)
NO
DataInputStream
DataOutputStream
Counting(计数流)
LineNumberReader
LineNumberInputStream
Peeking ahead(预读取流)
PusbackReader
PushbackInputStream
Printing(打印流)
PrintWriter
PrintStream
缓冲流(4种):“套接”在其他流上的,对读写数据提供了缓冲的功能,提高读写效率
BufferedReader中有readerLine方法一次能读取一行数据
转换流:InputStreamReader和OutputStreamWriter用于字节数据到字符数据的相互转换
InputStreamReader需要和InputStream”套接”在一起
OutputStreamWriter需要和OutputStream”套接”在一起
数据流:提供了处理存取JAVA原始数据类型(4类8种)的方法。
DataInputStream 需要和InputStream”套接”在一起
DateOutputStream需要和OutputStream”套接”在一起
打印流(只有输出流):具有flush功能,不会抛异常。
Object流(可序列化流):
某个类的对象想要实现可序列化,需要实现Serializable接口,这个对象的所有属性(包括private属性、应用的对象)都可以被序列化和反序列化,来保存和传递——自动序列化。Externalizabli接口(是Serializable接口的子接口)也可以用来实现序列化——自己控制需要序列化的属性。通过调用writerExternal()方法和readExternal()方法指定需要实现序列化的属性和反序列化的属性——手动序列化。
在Serializable接口中,可以用transient关键字来修饰不需要序列化的属性(不能修饰方法和类),序列化时变量的值为默认值。注意被static修饰的变量,无论加不加transient关键字都不会自动被序列化。而在Externalizabli接口中,不管transient关键字修饰与否,只看writerExternal()方法和readExternal()方法中是否应用了该属性。
- JAVA 中的IO流
- JAVA 中的IO流
- Java中的IO流
- JAVA 中的IO流
- JAVA 中的IO流
- JAVA 中的IO流
- JAVA 中的IO流
- java中的io流
- JAVA 中的IO流
- JAVA 中的IO流
- java中的io流
- java中的IO流。
- java中的io流
- java中的IO流
- java中的IO流
- Java中的IO流
- java中的IO流
- java中的IO流
- 设计模式之单例模式——Python实现
- leveldb和rocksdb在大value场景下的一些问题
- PAT-1064 Complete Binary Search Tree(完全二叉树)
- 左移位运算符>>、带符号的右移位运算符>>
- C++多线程编程简单体会
- JAVA中的IO流
- 解题报告 NOIP2015 子串
- android 金额限制
- 2.3.1 队列及顺序存储实现
- 图解Binder——类图和时序图
- MT4白标升级主标的方法
- matplotlib函数库使用plot绘制线状图
- VK Cup 2017
- C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解