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:目的地是-一个文件
构造方法的作用:
- 创建一个FileOutputstream对象
- 会根据构造方法中传递的文件/文件路径,创建一个空的文件
- 会把FileOutputstream对象指向创建好的文件
1.2写入数据的原理(内存-- >硬盘)
javao程序–>JVM(java虚拟机)-- >0S(操作系统)–>0S调用写数据的方法-- >把数据写入到文件中
1.3字节输出流的使用步骤(重点):
-
创建一个Fileoutputstream对象,构造方法中传递写入数据的目的地
-
调用FileOutputstream对象中的方法write,把数据写入到文件中
-
释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提供程序的效率)
下图是完整过程
1.4字节输出流入多个字节 的方法
1.public void write(byte[] b):将b. length字节从指定的字节数组写入此输出流。
3.用getBytes()方法获得字节数组,然后写入文件
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
举例:
结果:
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三个字节
while循环输入
2.5字节输入流一次读取一个字节的原理
2.6字节输入流一次读取多个字节
字节输入流一次读取多个字节的方法:
int read(byte[] b)从输入流中读取-定数量的字节,并将其存储在缓冲区数组b中。
明确两件事情:
1. 方法的参数byte[ ]的作用?
起到缓冲作用,存储每次读取到的多个字节
数组的长度一把定义为1024(1kb )或者1024的整数倍
2.方法的返回值int是什么?
每次读取的有效字节个数
举例
改进: