java IO(一)——文件输入输出流

java IO

硬盘和内存

1.字节输出流

1.1字节输出流OutputStream和FileOutputStream 类介绍

java. io. OutputStream:字节输出流

此抽象类是表示输出字节流的所有类的超类。
定义了一些子类共性的成员方法:

  • public void close() : 关闭此输出流并释放与此流相关联的任何系统资源。

  • public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。

  • public void write(byte[] b):将b. length字节从指定的字节数组写入此输出流。

  • public void write(byte[] b, int off, int len) :从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。

  • public abstract void write(int b) : 将指定的字节输出流。

  • java. io. FileOutputStream extends OutputStream

FileOutputstream:文件字节输出流

作用:把内存中的数据写入到硬盘的文件中
构造方法:
FileOutputstream(String name )创建-一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputstream(File file) 创建-一个向指定 File 对象表示的文件中写入数据的文件输出流。
参数:写入数据的目的
String name:目的地是- -个文件的路径
File file:目的地是-一个文件
构造方法的作用:

  1. 创建一个FileOutputstream对象
  2. 会根据构造方法中传递的文件/文件路径,创建一个空的文件
  3. 会把FileOutputstream对象指向创建好的文件

1.2写入数据的原理(内存-- >硬盘)

javao程序–>JVM(java虚拟机)-- >0S(操作系统)–>0S调用写数据的方法-- >把数据写入到文件中

1.3字节输出流的使用步骤(重点):

  1. 创建一个Fileoutputstream对象,构造方法中传递写入数据的目的地

  2. 调用FileOutputstream对象中的方法write,把数据写入到文件中

  3. 释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提供程序的效率)

    下图是完整过程

java IO(一)——文件输入输出流

1.4字节输出流入多个字节 的方法

1.public void write(byte[] b):将b. length字节从指定的字节数组写入此输出流。
java IO(一)——文件输入输出流

3.用getBytes()方法获得字节数组,然后写入文件

java IO(一)——文件输入输出流

1.5字节输出流的续写和换行

追加写/续写:使用两个参数的构造方法

  • FileOutputstream(String name, boolean append)创建一个向具有指定 name的文件中写入数据的输出文件流。
  • FileOutputStream(File file, boolean append) 创建一个向指定 File对象表示的文件中写入数据的文件输出流。
    参数:
    • String name, File file:写入数据的目的地
    • boolean append:追加写开关
      • true :创建对象不会覆盖源文件,继续在文件的末尾追加写数据
      • false:创建一-个新文件,覆盖源文件

写换行:写换行符号
windows: \r\n
linux: /n
mac: /r

举例:java IO(一)——文件输入输出流

结果:

java IO(一)——文件输入输出流

2.字节输入流

2.1java. io. InputStream:字节输入流

此抽象类是表示字节输入流的所有类的超类。
定义了所有子类共性的方法:

定义了所有子类共性的方法:

  • int read()从输入流中读取数据的下一一个字节。
  • int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
  • void close() 关闭此输入流并释放与该流关联的所有系统资源。

2.2FileInputStream文件字节输入流

java. io.FileInputStream extends InputStream
FileInputstream:文件字节输入流
作用:把硬盘文件中的数据,读取到内存中使用
构造方法:
FileInputStream(String name)
FileInputStream(File file)
参数:读取文件的数据源
String name:文件的路径
File file:文件
构造方法的作用:
1.会创建一个FileInputStream对象
2.会把FileInputStream对象指定构造方法中要读取的文件

2.3读取数据的原理(硬盘–>内存)

java程序–>JVM–>0S–>0S读取数据的方法–>读取文件

2.4字节输入流的使用步骤(重点):

1.创建FileInputStream对象,构造方法中绑定要读取的数据源
2.使用FileInputStream对象中的方法read,读取文件
3.释放资源

举例

原本文件里有abc三个字节

java IO(一)——文件输入输出流

while循环输入

java IO(一)——文件输入输出流

2.5字节输入流一次读取一个字节的原理

java IO(一)——文件输入输出流

2.6字节输入流一次读取多个字节

字节输入流一次读取多个字节的方法:

int read(byte[] b)从输入流中读取-定数量的字节,并将其存储在缓冲区数组b中。
明确两件事情:
1. 方法的参数byte[ ]的作用?
起到缓冲作用,存储每次读取到的多个字节
数组的长度一把定义为1024(1kb )或者1024的整数倍
2.方法的返回值int是什么?
每次读取的有效字节个数

举例

java IO(一)——文件输入输出流

改进:

java IO(一)——文件输入输出流

2.7一次读取多个字节原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

java IO(一)——文件输入输出流