IO流概述
- IO流用来处理设备之间的数据传输
- Java对数据的操作是通过流的方式
IO流的分类
- 按数据流向
输入流:读入数据
输出流:写出数据 - 按数据类型
字节流:可传输任意类型的文件
字符流:适合传输文本类型的文件
常用IO流关系图

字节流的复制文件操作
- FileInputStream & FileOutputStream
@Test
public void test1() throws IOException {
InputStream in = new FileInputStream("D:/QQWhatsnew.txt");
OutputStream out = new FileOutputStream("out.txt");
byte[] bytes = new byte[1024];
int len;
while ((len=in.read(bytes))!=-1){
out.write(bytes,0,len);
}
out.close();
in.close();
}
- BufferedInputStream & BufferedOutputStream
注:BufferedInputStream ,BufferedOutputStream对字节流进行了包装,实现了缓冲区功能
@Test
public void test2() throws IOException {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream("D:/QQWhatsnew.txt"));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("out2.txt"));
byte[] bytes = new byte[1024];
int len;
while ((len=in.read(bytes))!=-1){
out.write(bytes,0,len);
}
out.close();
in.close();
}
字符流复制文件操作
注:D:/QQWhatsnew.txt的编码为UTF-8
- FileReader & FileWriter
@Test
public void test3() throws IOException {
Reader reader = new FileReader("D:/QQWhatsnew.txt");
Writer writer = new FileWriter("out3.txt");
char[] chars = new char[1024];
int len;
while ((len=reader.read(chars))!=-1){
writer.write(chars,0,len);
}
writer.close();
reader.close();
}
- BufferedReader & BufferedWriter
注:BufferedReader ,BufferedWriter对字符流进行了包装,实现了缓冲区功能
@Test
public void test4() throws IOException{
BufferedReader reader = new BufferedReader(
new FileReader("D:/QQWhatsnew.txt"));
BufferedWriter writer = new BufferedWriter(
new FileWriter("out4.txt"));
char[] chars = new char[1024];
int len;
while ((len=reader.read(chars))!=-1){
writer.write(chars,0,len);
}
writer.close();
reader.close();
}
将字节流转换为字符流
- 不指定编码
@Test
public void test5() throws IOException {
Reader reader = new InputStreamReader(
new FileInputStream("D:/QQWhatsnew.txt"));
Writer writer = new OutputStreamWriter(
new FileOutputStream("out5.txt"));
char[] chars = new char[1024];
int len;
while ((len=reader.read(chars))!=-1){
writer.write(chars,0,len);
}
writer.close();
reader.close();
}
- 指定编码
这样 out6.txt 就以GBK的编码方式查看
@Test
public void test6() throws IOException {
Reader reader = new InputStreamReader(
new FileInputStream("D:/QQWhatsnew.txt"),"Utf-8");
Writer writer = new OutputStreamWriter(
new FileOutputStream("out6.txt"),"GBK");
char[] chars = new char[1024];
int len;
while ((len=reader.read(chars))!=-1){
writer.write(chars,0,len);
}
writer.close();
reader.close();
}
本文深入讲解Java中的IO流概念,包括其分类、字节流与字符流的区别,以及如何使用不同类型的流进行文件操作。通过具体示例展示了字节流和字符流的复制过程,并解释了如何将字节流转换为字符流。
219

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



