Java开发之IO流

IO流

流是内存与存储设备间传输数据的通道

分类

按流向

  • 输入流
  • 输出流

按单位

  • 字节流,字节为单位,可以读写所有数据

  • 字符流,字符为单位,只能读写文本数据

按功能

  • 节点流:具有实际传输数据的读写功能
  • 过滤流:在节点流的基础上增强功能

流分类

字节流

父类:抽象类

InputStream:字节输入流

OutputStream:字节输出流

InputStream

int available()

返回可以在没有阻塞的情况下从此输入流中读取(或跳过)的字节数的估计值,当检测到流结束时,可能为 0 或 0。

void close()

关闭此输入流并释放与该流关联的所有系统资源。

void mark(int readlimit)

标记此输入流中的当前位置。

boolean markSupported()

测试此输入流是否支持markreset方法。

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)

将指定字节写入此输出流。

image-20230413141235985

文件字节流image-20230413141320108

字节缓冲流

image-20230413202638974

BufferedInputStream/BufferedOutputStream构造需要一个底层流

对象流

image-20230415195556684

ObjectOutputStream/ObjectInputStream构造需要一个底层流

序列化的类要实现Serializable接口

seriaVersionUID保证序列化/反的类是同一个

使用transient修饰属性,这个属性将不能被序列化

静态属性也不能被序列化

1
WoStudent w1= (WoStudent) ois.readObject();

字符流

image-20230417195023502

文件字符流

字符缓冲流

PrintReader

PrintWrite

转换流

桥转换流:InputStreamReader/OutputStreamWriter

  • 可将字节流转换为字符流
  • 可设置字符的编码方式

File类

dir

遍历删除

遍历指定文件类型

properties

image-20230419195157336

image-20230418202358487

image-20230418202426853

image-20230418202453741


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!