IO流:
Java中I/O操作主要是指使用 java.io 包下的内容,进行输入、输出操
作。输入也叫做读取数据,输出也叫做作写出数据。
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) :
将指定的字节输出流。
FileOutputStream类:
文件输出流,用于将数据写出到文件。
构造方法:
public FileOutputStream(File file) :
创建文件输出流以写入由指定的 File对象表示的文件。
public FileOutputStream(String name) :
创建文件输出流以指定的名称写入文件。
当创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文
件,会创建该文件。如果有这个文件,会清空这个文件的数据。
写出字节数据:
1.写出字节 write(int b):每次可以写出一个字节数据
2.写出字节数组 write(byte[] b) :每次可以写出数组中的数据
3.写出指定长度字节数组 write(byte[] b, int off, int len):
每次写出从off索引开始,len个字节
数据追加续写:
保留目标文件中数据,继续添加新数据
public FileOutputStream(File file, boolean append) :
创建文件输出流以写入由指定的 File对象表示的文件。
public FileOutputStream(String name, boolean append) :
创建文件输出流以指定的名称写入文件。
写出换行:
Windows系统里,换行符号是 \r\n
字节输入流【InputStream】:
是表示字节输入流的所有类的超类,可以读取字节信息到内存中。
它定义了字节输入流的基本共性功能方法。
基本方法:
public void close() :
关闭此输入流并释放与此流相关联的任何系统资源。
public abstract int read() :
从输入流读取数据的下一个字节。
public int read(byte[] b) :
从输入流中读取一些字节数,并将它们存储到字节数组 b中 。
close方法,当完成流的操作时,必须调用此方法,释放系统资源。
构造方法:
FileInputStream(File file) :
通过打开与实际文件的连接来创建一个 FileInputStream ,该文
件由文件系统中的 File对象 file命名。
FileInputStream(String name) :
通过打开与实际文件的连接来创建一个 FileInputStream ,该文
件由文件系统中的路径名 name命名。
读取字节数据:
1. 读取字节:read 方法,每次可以读取一个字节的数据,提升为int
类型,读取到文件末尾,返回 -1 ,
2. 使用字节数组读取: read(byte[] b) ,每次读取b的长度个字节到
数组中,返回读取到的有效字节个数,读取到末尾时,返回 -1 ,
字符流:
字符为单位读写数据,专门用于处理文本文件。
字符输入流【Reader】:
表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。
方法:
public void close() :
关闭此流并释放与此流相关联的任何系统资源。
public int read() :
从输入流读取一个字符。
public int read(char[] cbuf) :
从输入流中读取一些字符,并将它们存储到字符数组 cbuf中
FileReader类:
把硬盘文件中的数据以字符的方式读取到内存中
1. 字符编码:字节与字符的对应规则。Windows系统的中文编码默认是GBK
编码表。idea中UTF-8
2. 字节缓冲区:一个字节数组,用来临时存储字节数据。
构造方法:
FileReader(File file) :
创建一个新的 FileReader ,给定要读取的File对象。
FileReader(String fileName) :
创建一个新的 FileReader ,给定要读取的文件的名称。
创建一个流对象时,必须传入一个文件路径。类似于FileInputStream 。
读取字符数据:
1.读取字符: read 方法,每次可以读取一个字符的数据,提升为int
类型,读取到文件末尾,返回 -1
2. 使用字符数组读取: read(char[] cbuf) ,每次读取b的长度个字
符到数组中,返回读取到的有效字符个数,读
取到末尾时,返回 -1
字符输出流【Writer】:
表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。
基本方法:
void write(int c)
写入单个字符。
void write(char[] cbuf)
写入字符数组。
abstract void write(char[] cbuf, int off, int len)
写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str)
写入字符串。
void write(String str, int off, int len)
写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush()
刷新该流的缓冲。
void close()
关闭此流,但要先刷新它。
FileWriter类:
写出字符到文件的便利类。
构造方法:
FileWriter(File file) :
创建一个新的 FileWriter,给定要读取的File对象。
FileWriter(String fileName) :
创建一个新的 FileWriter,给定要读取的文件的名称。
基本写出数据:
写出字符: write(int b) 方法,每次可以写出一个字符数据
关闭和刷新:
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。
但是关闭的流对象,是无法继续写出数据的。
因此,需要既写出,又写入数据时,需要使用flush()方法
flush :
刷新缓冲区,流对象可以继续使用。
close :
先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
1. 写出字符数组 :
write(char[] cbuf) 和 write(char[] cbuf, int off, int len) ,
每次可以写出字符数组中的数据
2. 写出字符串:
write(String str) 和 write(String str, int off, int len) ,
每次可以写出字符串中的数据,更为方便
3. 续写和换行:
将指定的字节信息写出到目的地。
【字符流,只能操作文本文件,不能操作图片,视频等非文本文件。】
属性集:
java.util.Properties:表示一个持久的属性集。使用键值结构存储数
据,每个键及其对应值都是一个字符串。【键和值默认为字符串类型】
Properties类:
构造方法:
public Properties() :
创建一个空的属性列表。
基本的存储方法:
public Object setProperty(String key, String value) :
保存一对属性。
public String getProperty(String key) :
使用此属性列表中指定的键搜索属性值。
public Set<String> stringPropertyNames() :
所有键的名称的集合。
与【流】相关的方法:
public void load(InputStream inStream) :
从字节输入流中读取键值对。
注意:
1.文本中的数据,必须是键值对形式,可以使用空格、等号、冒号等符
号分隔。
2.可以使用 # 进行注释,被注释的键值对不能被读取
3.存储的键值对默认为字符串类型,不会加引号
使用方法:
1.创建Properties集合对象;
2.使用Properties集合对象中的方法load读取保存键值对的文件
3.遍历Properties集合
|
|