第十周课程总结
Posted noacgnnolife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十周课程总结相关的知识,希望对你有一定的参考价值。
Java IO中常用的类:
类 | 说明 |
File | 文件类 |
RandomAccessFile | 随机存取文件类 |
InputStream | 字节输入流 |
OutputStream | 字节输出流 |
Reader | 字符输入流 |
Writer | 字符输出流 |
1) 字节流:数据流中最小的数据单元是字节
2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
在java中IO操作也是有相应步骤的,以文件的操作为例,主要操作流程如下:
(1)使用File类打开一个文件。
(2)通过字节流或字符流的子类指定输出的位置。
(3)进行读写操作。
(4)关闭输入/输出。
字节流:主要是操作byte类型数据,以byte数组为准,主要操作类就是outputStream类和InputStream类。
OutputStream类的常用方法:
方法 | 方法介绍 |
---|---|
public abstract void write(int b) | 写入一个字节,可以看到这里的参数是一个 int 类型,对应上面的读方法,int 类型的 32 位,只有低 8 位才写入,高 24 位将舍弃。 |
public void write(byte b[]) | 将数组中的所有字节写入,和上面对应的 read() 方法类似,实际调用的也是下面的方法。 |
public void write(byte b[], int off, int len) | 将 byte 数组从 off 位置开始,len 长度的字节写入 |
public void flush() | 强制刷新,将缓冲中的数据写入 |
public void close() | 关闭输出流,流被关闭后就不能再输出数据了 |
InputStream类的常用方法:
方法 | 方法介绍 |
---|---|
public abstract int read() | 读取数据 |
public int read(byte b[]) | 将读取到的数据放在 byte 数组中,该方法实际上是根据下面的方法实现的,off 为 0,len 为数组的长度 |
public int read(byte b[], int off, int len) | 从第 off 位置读取 len 长度字节的数据放到 byte 数组中,流是以 -1 来判断是否读取结束的 |
public long skip(long n) | 跳过指定个数的字节不读取 |
public int available() | 返回可读的字节数量 |
public void close() | 读取完,关闭流,释放资源 |
public synchronized void mark(int readlimit) | 标记读取位置,下次还可以从这里开始读取,使用前要看当前流是否支持,可以使用 markSupport() 方法判断 |
public synchronized void reset() | 重置读取位置为上次 mark 标记的位置 |
public boolean markSupported() | 判断当前流是否支持标记流,和上面两个方法配套使用 |
字符流:在程序中一个字符等于两个字节,java提供了Reader和Writer两个专门操作字符流的类。
Writer类的常用方法:
方法 | 方法介绍 |
---|---|
public void write(char cbuf[]) | 写入一个字符数组 |
abstract public void write(char cbuf[], int off, int len) | 从字符数组的 off 位置写入 len 数量的字符 |
public Writer append(CharSequence csq) | 追加吸入一个字符序列 |
abstract public void flush() | 强制刷新,将缓冲中的数据写入 |
Reader类的常用方法:
方法 | 方法介绍 |
---|---|
public int read(java.nio.CharBuffer target) | 读取字节到字符缓存中 |
public int read() | 读取单个字符 |
abstract public int read(char cbuf[], int off, int len) | 从 off 位置读取 len 长度的字符到 char 数组中 |
public boolean ready() | 和上面的 available() 方法类似 |
public void mark(int readAheadLimit) | 标记读取位置,下次还可以从这里开始读取,使用前要看当前流是否支持,可以使用 markSupport() 方法判断 |
abstract public void close() | 关闭流释放相关资源 |
字节流与字符流的区别:字节流直接操作文件,而字符流会先将数据放在缓存之后,再从缓存写入文件。
以上是关于第十周课程总结的主要内容,如果未能解决你的问题,请参考以下文章