2018-12-27

一、IO流分类:

(一)按流向分类

1.输入流 读取数据 FileReader Reader

2.输出流 写出数据 FileWriter Writer

(二)数据类型:

1.字节流:可以读取视频、图片等

  (1)字节输入流  读取数据  InputStream

  (2)字节输出流  写出数据  OutputStream

2.字符流:读取文本适宜

  (1)字符输入流  读出数据  Reader

  (2)字符输入流  写出数据  Writer

图片发自简书App


例子:复制一个文件

FileReader fr = new FileReader("IODemo.java");
FileWriter fw = new FileWriter("d:\\IODome.java");
//一次读写一个字符
int ch;
while((ch = fr.read()) != -1){
  fw.writer(ch);
  fw.flush();
}
//一次读写一个字符数组
int len;
char[] chs = new char[1024];
while((len = fr.read(chs))!= -1){
  fw.write(chs,0,len);
}
fw.close();
fr.close();

二、InputStream

(一)在java.io包下,此抽象类表示字节输入流的所有类的超类

例子:分别使用字符流和字节流复制图片

FileReader fr = new FileReader("1.jpg");
FileWriter fw = new FileWriter("D:\\1.jpg");
//一次读写一个字符数组
int len;
char[] chs = new char[1024];
while((len = fr.read(chs))!=-1){
  fw.writer(chs,0,len);
  fw.flush();
}
fw.close();
fr.close();//无法正确读取文件
FileInputStream fis = new FileInputStream("1.jpg");
FileOutputStream fos = new FileOutputStream("d:\\1.jpg");
//一次读取一个字节数组
int len;
byte[] bys = new byte[1024];
while((len = fis.read(bys))!=-1){
  fos.writer(bys,0,len);//不需要刷新,直接写入文件
}
fos.close();
fis.close();//可以看到图片

因为二进制文件只能使用字节流进行复制,使用windows自带记事本打开读不懂的就是二进制文件。文本文件的复制既可以使用字符流,也可以使用字节流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容