A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

字节流,字符流和properties

IO流: 输入(Input)输出(Output)流

流.数据流

输入: 从硬盘(文件)读取到内存(Java程序)

输出: 从内存(Java程序)写入到硬盘(文件)

(入和出都是相对于内存来说的)

IO流的分类:

字节流 (读写字节: byte, 可以读写所有类型的文件, 包括视频, 图片, 音频, 文本等)

字节输入流: java.io.InputStream 抽象类

字节输出流: java.io.OutputStream 抽象类

字符流 (读写字符: char, String, 只能读写文本文件)

字符输入流: java.io.Reader 抽象类

字符输出流: java.io.Writer 抽象类



字节输出流: OutputStream和FileOutputStream
java.io.OutputStream抽象类: 字节输出流 (顶层类)
void close() :释放资源
void flush() :刷新缓冲区(对于字节流来说没有作用)
abstract void write(int b): 一次写一个字节 (参数int便于传递byte的整数不用强转)
void write(byte[] b): 一次写一个字节数组
void write(byte[] b, int offset, int len): 一次写一个字节数组的一部分

//构造方法
FileOutputStream(String name): 通过文件路径创建文件字节输出流
FileOutputStream(File file): 通过File对象创建文件字节输出流
构造方法的作用:
1. 创建一个FileOutputStream对象
2. 根据构造方法传递的路径, 在磁盘上创建一个空文件 ("如果文件存在则会清空数据")
3. 将创建的FileOutputStream对象指向这个磁盘上的文件


java.io.InputStream抽象类: 字节输入流 (顶层类)
void close(): 释放资源
int read(): 一次读一个字节
int read(byte[] b): 一次读一个字节数组
读到的字节存放在参数中的字节数组中, 返回int值是本次读到的字节的个数. 读到文件末尾返回-1
java.io.FileInputStream类: 文件字节输入流
// 构造方法
FileInputStream(String name): 使用文件路径创建文件字节输入流
FileInputStream(File file): 使用File对象创建文件字节输入流
构造方法的作用
1. 创建FileInputStream对象
2. 将FileInputStream对象指向磁盘上的文件


字符输入流: Reader和FileReader
注意: 字符流只能读写"文本文件"
java.io.Reader抽象类: 字符输入流 (顶层)
void close() :关闭此流并释放与此流相关联的任何系统资源
int read(): 一次读一个字符char, 返回读到的字符.
int read(char[] cbuf): 一次读取一个字符数组char[]

java.io.FileReader类: 文件字符输入流
FileReader(File file): 根据File对象创建文件字符输入流
FileReader(String fileName): 根据File对象创建文件字符输入流
构造方法的作用:
1. 创建FileReader对象
2. 将FileReader对象指向磁盘上的文件

java.io.Reader抽象类: 字符输入流 (顶层)
int read(): 一次读一个字符char, 返回读到的字符.
读到文件末尾返回-1 (返回int为了代码编写方便)
int read(char[] cbuf): 一次读取一个字符数组char[]
返回读取的字符个数. 读到文件末尾返回-1

字符输出流: Writer和FileWriter
`
java.io.Writer抽象类: 字符输出流 (顶层类)
abstract void close(): 刷新缓冲区并释放资源
abstract void flush() :刷新缓冲区
void write(int c): 写一个字符 (int类型为了代码编写方便)
void write(char[] cbuf): 写一个字符数组
abstract void write(char[] b, int off, int len): 写一个字符数组的一部分
void write(String str): 写一个字符串
void write(String str, int off, int len): 写一个字符串的一部分
注意: write()方法只是将数据写到内存缓冲区, 最后必须调用flush()或close()才能将数据真正写入磁盘

java.io.FileWriter类: 文件字符输出流
FileWriter(File file): 通过File对象创建文件字符输出流
FileWriter(String fileName): 通过文件路径创建文件字符输出流
作用:
1. 创建FileWriter对象
2. 根据构造方法中的路径, 在磁盘上创建文件 ("如果文件已存在, 则清空文件内容")
3. 将FileWriter对象指向磁盘上的文件

FileWriter使用步骤:
1.创建FileWriter对象, 构造方法中绑定要写入数据的目的地
2.使用FileWriter中的方法 write(), 把数据写入到"内存缓冲区"中(字符转换为字节的过程)
3.使用FileWriter中的方法 flush(), 把内存缓冲区中的数据,"刷新到文件中"
4.释放资源 close() (会先把内存缓冲区中的数据刷新到文件中)

FileWriter中带有续写功能的构造:
FileWriter(File file, boolean append): 通过File对象创建流. 第二个参数为true可以续写
FileWriter(String fileName, boolean append): 通过文件路径创建流. 第二个参数为true可以续写



Properties集合

Properties双列集合: 键和值都是 String 类型
java.util.Properties类: 属性集, 属于Map的双列集合, 继承自Hashtable
Properties(): 创建一个Properties集合

Object setProperty(String key, String value): 保存/替换键值对
String getProperty(String key): 通过键获取值. 键不存在返回null
Set stringPropertyNames(): 返回键的集合
void store(OutputStream out, String comments): 将集合用字节流写入文件(不能中文),并写入注释
void store(Writer writer, String comments): 将集合用字符流写入文件(可以中文),并写入注释
void load(InputStream inStream): 从配置文件中通过字节流加载数据到Properties集合(不能中文)
void load(Reader reader): 从配置文件中通过字符流加载数据到Properties集合(可以中文)




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马