美文网首页
2018-12-27

2018-12-27

作者: 啦啦啦_9a5f | 来源:发表于2018-12-27 07:37 被阅读0次

一、IO流分类:

(一)按流向分类

1.输入流 读取数据 FileReader Reader

2.输出流 写出数据 FileWriter Writer

(二)数据类型:

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

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

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

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

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

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

2018-12-27

例子:复制一个文件

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自带记事本打开读不懂的就是二进制文件。文本文件的复制既可以使用字符流,也可以使用字节流。

相关文章

网友评论

      本文标题:2018-12-27

      本文链接:https://www.haomeiwen.com/subject/wvmllqtx.html