Java开发之IO流
IO流
流是内存与存储设备间传输数据的通道
分类
按流向
- 输入流
- 输出流
按单位
字节流,字节为单位,可以读写所有数据
字符流,字符为单位,只能读写文本数据
按功能
- 节点流:具有实际传输数据的读写功能
- 过滤流:在节点流的基础上增强功能
流分类
字节流
父类:抽象类
InputStream:字节输入流
OutputStream:字节输出流
InputStream
int
available()
返回可以在没有阻塞的情况下从此输入流中读取(或跳过)的字节数的估计值,当检测到流结束时,可能为 0 或 0。
void
close()
关闭此输入流并释放与该流关联的所有系统资源。
void
mark(int readlimit)
标记此输入流中的当前位置。
boolean
markSupported()
测试此输入流是否支持mark
和reset
方法。
static InputStream
nullInputStream()
返回一个不读取字节的新InputStream
。
abstract int
read()
从输入流中读取数据的下一个字节。
int
read(byte[] b)
从输入流中读取一些字节并将它们存储到缓冲区数组b
中。
int
read(byte[] b, int off, int len)
从输入流中读取多达len
字节的数据到字节数组中。
byte[]
readAllBytes()
从输入流中读取所有剩余字节。
int
readNBytes(byte[] b, int off, int len)
从输入流中读取请求的字节数到给定的字节数组中。
byte[]
readNBytes(int len)
从输入流中读取最多指定数量的字节。
void
reset()
将此流重新定位到上次对该输入流调用mark
方法时的位置。
long
skip(long n)
跳过并丢弃此输入流中的n
字节数据。
void
skipNBytes(long n)
跳过并丢弃此输入流中正好n
字节的数据。
long
transferTo(OutputStream out)
从此输入流中读取所有字节,并按照读取顺序将字节写入给定的输出流。
OutputStream
void
close()
关闭此输出流并释放与此流关联的所有系统资源。
void
flush()
刷新此输出流并强制写出任何缓冲的输出字节。
static OutputStream
nullOutputStream()
返回一个新的OutputStream
丢弃所有字节。
void
write(byte[] b)
将指定字节数组中的b.length
字节写入此输出流。
void
write(byte[] b, int off, int len)
从偏移量off
开始的指定字节数组中写入len
字节到此输出流。
abstract void
write(int b)
将指定字节写入此输出流。
文件字节流
字节缓冲流
BufferedInputStream/BufferedOutputStream构造需要一个底层流
对象流
ObjectOutputStream/ObjectInputStream构造需要一个底层流
序列化的类要实现Serializable接口
seriaVersionUID保证序列化/反的类是同一个
使用transient修饰属性,这个属性将不能被序列化
静态属性也不能被序列化
1 |
|
字符流
文件字符流
字符缓冲流
PrintReader
PrintWrite
转换流
桥转换流:InputStreamReader/OutputStreamWriter
- 可将字节流转换为字符流
- 可设置字符的编码方式
File类
dir
遍历删除
遍历指定文件类型
properties
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!