1. 字节流写入数据
1)创建字节流对象
2)调用写数据的方法
write(int b)
写入一个字节
write(byte[] bys)
写入一个字节数组
write(byte[] bys, int start, int len)
写入一个字节数组的一部分
3) 释放资源
2. FileInputStream 读取数据
read()
-- 一次读取一个字节
read(byte[] bys)
-- 一次读取一个字节数组
注意:字节流读取数据直接显示在控制台,可能会出现中文乱码。但是写入文件中时不会出现。
复制文件时:读取使用一次读取一个字节数组,写入采用一次写入一个字节数组的一部分。
3. 缓冲流
缓冲流:仅提供缓冲的功能,实现数据的高效读写,底层的读写操作还是依赖于它包装的基本流。
基本流:直接能够操作文件的流 -- 也就是说构造方法里面能直接传入File对象的流。
BufferedWriter 缓冲字符输出流 写入数据:
// 创建输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
// 写数据
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String s, int off, int len)
写入字符串的某一部分。
// 释放资源
close()
BufferedReader 缓冲字符输入流 读取数据:
// 创建输入流对象
BufferedReader bw = new BufferedReader(new FileReader("a.txt"));
// 读数据
int read()
读取一个字符
int read()
读取一个字符数组
// 释放资源
close()
4. 简单总结
对于文本文件(用windows自带记事本打开不乱码)
基本字符流:
FileReader:
int read()
读取单个字符。
int read(char[] chs)
将字符读入数组。
FileWriter:
void write(int c)
写入单个字符。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(String str)
写入字符串。
缓冲字符流:
BufferedReader
同基本字符输入流
特有:
String readLine()
-- 读取一行的数据,不包括换行符
BufferedWriter
同基本字符输出流
特有:
newLine()
-- 写入一个行分隔符
与readLine配合赋值文本文件:
读:
String readLine()
写:
write(String str)
newLine()
flush()
对于二进制流数据(图片、音视频等等)
基本字节流:
FileInputStream:
int read()
读取单个字节。
int read(byte[] bys)
将字节读入数组。
FileOutputStream:
void write(int b)
写入单个字节。
void write(byte[] bys, int off, int len)
写入字节数组的某一部分。
缓冲字节流:
BuffereInputStream:
同基本字符输入流
BufferedOutputStream:
同基本字符输出流
最终我们采用的时候都是使用高效流并且一次读写一个数组的方式。
5. 键盘录入数据必须要自定义结束条件。
6. 文件改名
File类的方法
boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。
复制指定目录下指定后缀的文件案例注意事项:
1) 分清文件和文件夹
-- 如果不小心把文件夹对象放到了流的构造方法,会报拒绝访问
2) 先复制后改名
-- 必须保证改名操作在关流之后。流如果没关,会占用文件,改名失败。
|
|