知识模块: 一.IO流概述: 二.IO体系 1.字节流体系 a.OutputStream:字节输出(写入)流 b.成员方法 c.续写和写入换行 d.高效字节输入流 详细代码在下方gitte链接中 Day23 JavaSE: Java基础 一.IO流概述: I:Input: 从硬盘上读取数据到java程序(内存) 硬盘 =》 内存 (读取) O:Output:将java程序中的数据写入到硬盘 内存 =》硬盘 (写入) 二.IO体系 1.字节流体系 a.OutputStream:字节输出(写入)流 FileOutputStream:将数据写入文件 a.构造方法 FileOutStream类: 构造方法: FileOutputStream(String name) name:传入一个文件路径 1.如果传入的文件路径在硬盘中不存在,那么该构造方法会抛出 java.io.FileNotFoundException 2.如果传入的文件路径在硬盘上存在而且该路径下没有该文件,那么该构造方法会为我们创建一个空白文件 3.如果传入的文件路径在硬盘上存在而且该路径下已有该文件,那么该构造方法会清空该文件内容 创建一个向具有指定名称的文件中写入数据的输出文件流。 成员方法: void write(int b) 将指定字节写入此文件输出流。 void close() 关闭此文件输出流并释放与此流有关的所有系统资源。 通过FileOutputStream向文件中写内容的步骤: 1.通过输出流关联一个文件1.txt 2.通过write方法向1.txt中写字节 3.关流释放资源 4.写动作一定是在close之前,因为close关流之后,底层的IO资源已经释放,无法再使用 b.成员方法 FileOutStream类: 成员方法 void write(byte[] b) 将 b.length 个字节从指定 byte 数组写入此文件输出流中。 void write(byte[] b, int off, int len) 将指定的字节数组(b),从off索引开始,写入len个字节,(包含off索引处的字节) String类中的方法 byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 c.续写和写入换行 FileOutStrean构造方法: FileOutputStream(String name, boolean append) 当第二个参数为true的时候write会不断往文件末尾追加 当第二个参数为false的时候,每次执行构造方法都会清空文件内容 如果想让文件中的内容换行,我们需要向文件中写入换行符 不同操作系统换行符也不同 widows:\r \n linux: \n mac os: \r b.Inputstream :字节输入(读取)流 FileInputStream a.构造方法 FileInputStream构造方法 FileInputStream(String name) FileInputStream读取硬盘上已经存在的文件,如果文件不存在,抛出异常 java.io.FileNotFoundException: Day23\5.txt (系统找不到指定的文件。) 成员方法: int read() 从此输入流中读取一个数据字节。 void close() 关闭此文件输入流并释放与此流有关的所有系统资源。 b.成员方法 FileInputStream成员方法 int read(byte[] b) 1.从文件中读取尽可能多的字节,去装到字节数组中去,0索引存放文件第一个字节,以此类推 2.返回值代表每次从文件中读取的字符个数 String类的构造方法 String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。 c.拷贝文件案例 利用字符数组拷贝图片 利用字节输入和字节输出可以拷贝计算机中任意文件,因为计算机中所有的文件都是以字节的形式存储的 c.高效字节输出流 BufferedOutputStream类: 该类实现缓冲的输出流,缓冲的目的就是为了提高写效率 构造方法: BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。 成员方法: void flush() 刷新此缓冲的输出流。 public void write(byte[] b) 将 b.length 个字节写入此输出流。 void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流。 void write(int b) 将指定的字节写入此缓冲的输出流。 BufferedOutputStream原理: 他底层其实会开辟一个默认长度为8192字节数组,为了提高效率 但是我们write()方法会把字节写入到底层字节数组中,只有通过刷新或者关流,才能将字节数组中的字节刷到文件中去 d.高效字节输入流 BufferedInputStream 构造方法 BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。 成员方法 int read() 参见 InputStream 的 read 方法的常规协定。 public int read(byte[] b) throws IOException从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。 BufferedInputStream底层也会开辟一个默认长度为8192的字节数组,将来读到数据都会存储到这个字节数组中去 2.字符流体系
Java中的字节流体系
于 2023-11-15 23:32:31 首次发布