分类:IO流的分类
- 字节输入输出流:FileInputStream / FileOutputStream
- 字符输入输出流:FileReader / FileWriter
区别:
1.字节输入输出流:
- 读入外部文件的时候是按字节单位读取的
- 写出外部文件的时候是按字节直接写入文件中,无需经过缓存,直接修改文件
2.字符输入输出流:
- 读入外部文件的时候是按字符单位读取的
- 先写出到缓存中,然后刷新后写入文件,如果写二进制文件的话会出现文件损坏而无法打开的情况。
什么是二进制文件呢?
通俗易懂的说就是:Windows自带的记事本不能读懂的文件(打开乱码),如:图片,Word文件等
如果你还是分不清什么是二进制文件,没关系,我们都用字节流去读写文件就行了。
实例:在相对路径里复制 源文件(1.pptx) 到 目标文件(xieqibiao.pptx) 中
代码如下:
//复制Word二进制文件,二进制文件就是Windows的记事本读不懂的文件,打开乱码的那种
//1.创建字节输入流
FileInputStream fis = new FileInputStream(\"1.pptx\");
//2.创建字节输出流
FileOutputStream foStream = new FileOutputStream(\"xieqibiao.pptx\");
//3.复制文件
int len = 0;//用来接收读出来的字符长度
byte[] bys = new byte[1024];//一般长度设置为1024的整数倍
while((len = fis.read(bys)) != -1) {//当读到还有字节的时候,写文件输出
foStream.write(bys,0,len);//读到多少写多少
}
//4.关闭资源
fis.close();
foStream.close();
进阶:高效输入输出 -- 字符缓冲流
实例:
代码如下:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
/*
* BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
* BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
*/
public class BufferedStreamDemo {
public static void main(String[] args) throws IOException {
//创建输出缓冲流对象
/*
BufferedWriter bw = new BufferedWriter(new FileWriter(\"bw.txt\"));
bw.write(\"hello\");
//bw.flush();
bw.close();
*/
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(\"FileWriterDemo.java\"));
/*
//一次读写一个字符
int ch;
while((ch=br.read())!=-1){
System.out.print((char)ch);
}
*/
//一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
}
//释放资源
br.close();
}
}
继续阅读与本文标签相同的文章
上一篇 :
pytorch中embedding词嵌入的作用
-
斩获三个“全国第一”,漳州有一家“隐形冠军”企业
2026-05-18栏目: 教程
-
经历8个月改造,岗顶百脑汇“转型回归”
2026-05-18栏目: 教程
-
ROKU流媒体聚合平台终将变革电视机操作系统和流媒体的观看方式
2026-05-18栏目: 教程
-
权威报告:中国专利申请连续8年居首,占世界一半
2026-05-18栏目: 教程
-
新技术:AI可快速准确检测因糖尿病造成的视网膜病变
2026-05-18栏目: 教程
