> 文章列表 > Java核心技术知识点笔记—输入和输出

Java核心技术知识点笔记—输入和输出

Java核心技术知识点笔记—输入和输出

前言:Java中用于输入和输出的各种应用编程接口(Application Programming Interface,API),可以用来访问文件与目录,以二进制格式和文本格式来读写数据。

1、输入和输出流:

(1)Java API中,可以从其中读入一个字节序列的对象称作输入流,可以向其中写入一个字节序列的对象称作输出流。字节序列的来源和目的地可以是文件、网络连接、甚至是内存块。

(2)面向字节的流不便于处理以Unicode形式存储的信息,因此,从抽象类Reader和Writer中继承出一个专门用于处理Unicode字符的单独的类层次结构。这些类拥有的读入和写出操作都是基于两字节的Char值(即Unicode码元)。

1.1、输入流:可以从其中读入一个字节序列的对象称作输入流。

1.1.1、读字节:InputStream类

(1)abstract int read():从数据中读入一个字节,并返回该字节。在碰到输入流的结尾时返回-1。

(2)int read(byte[ ] b):读入一个字节数组,并返回实际读入的字节数。最多读入b.length个字节。在碰到输入流的结尾时返回-1。

(3)int read(byte[ ]b,int off,int len):读入一个字节数组,并返回实际读入的字节数,在碰到输入流的结尾时返回-1。参数 off 指定第一个读入字节被放置的位置在b中的偏移量;参数 len 指定读入字节的最大数量。

(4)long skip(long n):在输入流中跳过n个字节,返回实际跳过的字节数(如果碰到输入流的结尾,则可能小于n)。

(5)int available():返回在不阻塞的情况下可获取的字节数。

(6)void close():关闭输入流

(7)void mark(int readlimit):在输入流的当前位置打一个标记(并非所有的流都支持这个特性)。如果输入流中已经读入的字节多余readlimit个,则这个流允许忽略这个标记。

(8)void reset():返回到最后一个标记,随后对read的调用将重新读入这些字节。如果当前没有任何标记,则这个流不被重置。

(9)boolean markSupported():如果流支持打标记,返回true。

1.2、输出流:可以向其中写入一个字节序列的对象称作输出流。

1.2.1、写字节:OutputStream类

(1)abstract void write(int n):写出n个字节的数据

(2)void write(byte[ ] b):写出所有字节到数组b中

(3)void write(byte[ ] b, int off, int len):写出某个范围的字节到数组b。参数 off 指定第一个写出字节在b中的偏移量,参数 len 指定写出字节的最大数量。

(4)void flush():冲刷输出流,即将所有缓冲的数据发送到目的地。

(5)void close():冲刷并关闭输出流。