美文网首页
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