第十周课程总结

内容总结

  • 流是个抽象的概念,是对输入输出设备的抽象,输入流可以看作一个输入通道,输出流可以看作一个输出通道。
  • 输入流是相对程序而言的,外部传入数据给程序需要借助输入流。
  • 输出流是相对程序而言的,程序把数据传输到外部需要借助输出流。

流的分类:

四大基本抽象流(输入流,输出流,字符流,字节流)

  • 文件流
  • 缓冲流
  • 转换流
  • 数据流
  • print流
  • object流

按数据流的方向不同可以分为输入流和输出流。
按处理数据单位不同可以分为字节流和字符流。(一个字符是两个字节)
按功能不同可以分为节点(原始)流和处理(包裹)流。

流分类:

  • 1.Java的字节流
    InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
  • 2.Java的字符流
    Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
    InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new

什么是字节流?
字节流--传输过程中,传输数据的最基本单位是字节的流。

什么是字符流?
字符流--传输过程中,传输数据的最基本单位是字符的流。

字节输出流常用的主要有:

  • OutputStream
  • FileOutputStream
  • BufferedOutputStream 【BufferedOutputStream不是OutputStream的直接实现子类,是FilterOutputStream的子类】

字符输入流常用的主要有:

  • Reader
  • InputStreamReader
  • FileReader
  • BufferedReader

字节流与字符流主要的区别是他们的的处理方式

  • 字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
  • 字节流默认不使用缓冲区;字符流使用缓冲区。
  • 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。
字节流 字符流
缓冲区
类型 InputStream,OutputStream Reader,writer
处理 二进制数据 文本数据
对象 序列化 反序列化
关联 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联。

转换流

  • 字节流和字符流是可以进行相互转换的。
  • OutputStreamWriter:将字节输出流变为字符输出流(Writer对于文字的输出要比OutputStream方便)
  • InputStreamReader:将字节输入流变为字符输入流(InputStream读取的是字节,不方便中文的处理)
package com.company;

import java.io.*;


public class Main {
    public static void main(String[] args) throws Exception{
        File file=new File("C:"+File.separator+"E"+File.separator+"test.txt");
        if(!file.getParentFile().exists()){        //必须保证父目录存在
            file.getParentFile().mkdirs();       //创建多级父目录`在这里插入代码片`
        }
        OutputStream output= new FileOutputStream(file);
        Writer out=new OutputStreamWriter(output);     //字节流转为字符流
        out.write("java我不会呀!");
        out.close();
    }
}

上图!!

原文地址:https://www.cnblogs.com/zsbhs/p/11787281.html