• 第十周课程总结


    内容总结

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

    流的分类:

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

    • 文件流
    • 缓冲流
    • 转换流
    • 数据流
    • 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();
        }
    }
    

    上图!!

  • 相关阅读:
    WEBSHELL跳板REDUH使用说明
    lcx.exe内网转发命令教程 + LCX免杀下载
    程序只启动一个实例的几种方法
    VS2010中遇到_WIN32_WINNT not defined
    VC编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
    python(31) enumerate 的用法
    利用余弦定理计算文本的相似度
    Linux命令(24) :sort
    python(30) 获取网页返回的状态码,状态码对应问题查询
    python(29)强大的zip函数
  • 原文地址:https://www.cnblogs.com/zsbhs/p/11787281.html
Copyright © 2020-2023  润新知