流向
判断依据
以内存为主角来判断
输入流
如果数据从硬盘到内存
输入流一般是进行读操作
输出流
如果数据从内存到硬盘
输出流一般是进行写操作
流的关系图

字节流基类

字节输出流的使用 FileOutputStream
实例化对象示例
FileOutputStream fileOutputStream = new FileOutputStream("abc.txt");
根据字节编码来写内容
fileOutputStream.write(76);
使用字节数组来一次编写多个内容
byte[] bytes={66,67,68};
fileOutputStream.write(bytes);
使用字节数组来写,从指写下标开始,写入n个成员
fileOutputStream.write(bytes,0,2);
字节流写中文
先把中文字符串转成字节数组
再编写
byte[] bytes = "你好,中国".getBytes(StandardCharsets.UTF_8);
fileOutputStream.write(bytes);
字节输入流的使用 FileInputStream
读一个字节
int read = fileInputStream.read();
用字节数组接收读的内容
int read1 = fileInputStream.read(bytes);
用字节数组读 限定从数组的几号位开始存 存几个数据
int read1 = fileInputStream.read(bytes, 2, 2);
遍历内容 一个字节一个字节
// 读取readme.txt中的内容
FileInputStream fileInputStream = new FileInputStream("readme.txt");
// 定义一个收纳字符串
String content = "";
// 一个字节一个节字的遍历
while (true) {
// 读一个数据
int read = fileInputStream.read();
// 判断是否是尽头
if (read == -1) {
// 到尽头就跳出
break;
}
// 代码来到这里代表有内容
// 把字节转成字符
char c = (char) read;
content += c;
}
// 输出结果
System.out.println(content);
遍历内容 使用字节数组
// 读取readme.txt中的内容
FileInputStream fileInputStream = new FileInputStream("readme.txt");
// 遍历方式2,利用字节数据
byte[] bytes = new byte[3];
// 内容字符串
String content = "";
// 开始遍历
while (true) {
// 尝试获取数据
// 如果成功获得了数据,read就是获取到的字节个数
int read = fileInputStream.read(bytes);
// 判断是否成功获取数据
if (read == -1) {
// 没有数据就退出
break;
}
// 代码来到这里代表有数据
// [97,98,0,0,0]
String s = new String(bytes, 0, read);
// 内容字符串接收
content += s;
}
// 输出最终结果
System.out.println(content);
字节缓冲输出流 BufferedOutputStream
// 使用缓冲流写数据
// 往data.txt中存放数据abc
// 字节输出流
FileOutputStream fileOutputStream = new FileOutputStream("data.txt");
// 缓冲字节输出流
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
// 写
byte[] bytes = {97, 98, 99};
bufferedOutputStream.write(bytes);
// 关
bufferedOutputStream.close();
fileOutputStream.close();
字节缓冲输入流 BufferedInputStream
// 读数据
// 获得字节输入流
FileInputStream fileInputStream = new FileInputStream("data.txt");
// 获得缓冲输入流
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
// 定义字节组
byte[] bytes = new byte[5];
// 定义内容字符串
String content = "";
// 遍历读所有内容
while (true) {
// 尝试拿一次数据
int len = bufferedInputStream.read(bytes);
// 判断是否成功拿到数据
if (len == -1) {
// 无数据代表结束了
break;
}
// 有数据就提取数据
String s = new String(bytes, 0, len);
// 内容字符串拼接
content += s;
}
// 输出内容
System.out.println(content);
// 关资源
bufferedInputStream.close();
fileInputStream.close();
字符流的常用类
字符流抽象基类
Reader
Writer
字符流的实现类
InputStreamReader
InputStreamWriter
好用的字符流的类
FileReader
FileWriter
字符输出流 FileWriter
// 获得字符输出流对象
FileWriter fileWriter = new FileWriter("data.txt");
// 写数据
fileWriter.write("你好,java");
// 关资源
fileWriter.close();
字符输入流
// 获取对象
FileReader fileReader = new FileReader("data.txt");
// 内容字符串
String content = "";
// 字符数组
char[] chars = new char[5];
// 读内容
while (true) {
// 获取一次数据
int len = fileReader.read(chars);
// 判断数据是否存在
if (len == -1) {
// 到未位就退出
break;
}
// 担取字符数组中的数据
String s = new String(chars, 0, len);
// 拼内容
content += s;
}
System.out.println(content);
// 关闭对象
fileReader.close();
字符缓冲输出流 BufferedWritter
// 字符输出流
FileWriter fileWriter = new FileWriter("one.txt");
// 字符缓冲输出流
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write("你好中国");
// 关资源
bufferedWriter.close();
fileWriter.close();
字符缓冲输入流
// 字符输入流
FileReader fileReader = new FileReader("data.txt");
// 缓冲输入流
BufferedReader bufferedReader = new BufferedReader(fileReader);
// 读内容 特色方法
String s = bufferedReader.readLine();
System.out.println(s);
// 关资源
bufferedReader.close();
fileReader.close();
本文详细介绍了Java中的流操作,包括字节流和字符流的使用,如FileOutputStream和FileInputStream用于文件的读写,以及BufferedOutputStream和BufferedInputStream的缓冲功能。同时,文章还提到了Reader和Writer作为字符流的基类,以及它们的具体实现如FileReader和FileWriter,以及对应的缓冲类BufferedWriter和BufferedReader的使用方法。

710

被折叠的 条评论
为什么被折叠?



