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 协议 ,转载请注明出处!