1. 转换流

  1.1 OutputStreamWriter类-字符流通向字节流的桥梁,可使用指定的字符编码表,将要写入流中的字符编码成字节。

  1.2 InputStreamReader类-字节流通向字符流的桥梁,可使用指定的字符编码表读取字节并将其解码为字符

  (1)读取指定的编码的文件时,一定要指定编码格式,否则就会发生解码错误,而发生乱码现象

  1.3 转换流和子类区别

  (1)继承关系:

    OutputStreamWriter:

      |-FileWriter

    InputStreamReader:

      |-FileReader

  (2)父类和子类的功能区别

    OutputStreamWriter和InputStreamReader是字符和字节的桥梁,也可以称之为字符转换流,字符转换流原理,字节流+编码表

    FileWriter和FileReader:作为子类,仅作为操作字符文件的便捷类存在。当操作的字符文件,使用的是默认编码表时可以不用父类,直接使用子类即可,简化代码

2. 缓冲流

  2.1 字节缓冲流

  (1)写入数据到流中,字节缓冲输出流 BuffereOutputStream

  (2)读取流中的数据,字节缓冲输入流 BufferedInputStream

  (3)它们的内部包含一个缓冲区,通过缓冲区读写,可以提高IO流的读写速度

  2.2 字节缓冲输出流 BuffereOutputStream

  (1)构造方法

    public  BuffereOutputStream(OutputStream out)  创建一个新的缓冲输出流,以将数据写入指定的底层输出流

  2.3 字节缓冲输入流 BuffereInputStream

  (1)构造方法

    public  BuffereInputStream(InputStream in)  

  2.4 字符缓冲流

  (1)字符缓冲输入流 BufferedReader

  (2)字符缓冲输出流 BufferedWriter

  2.5 字符缓冲输出流 BufferedWriter-将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入

  (1)方法

    void nextLine() 根据当前的系统,写入一个换行符

  2.6 字符缓冲输入流 BufferedReader-将字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取

  (1)方法

    public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null

3. 流的操作规律

  3.1 四个明确

  (1)要操作的数据是数据源还是数据目的

    源:InputStreamReader Reader 

    目的:OutputStream Writer

  (2)要操作的数据是字节还是文本

    源:

      字节:InputStream  

      文本:Reader

    目的:

      字节:OutputStream

      文本:Writer

  (3)明确数据所在的具体设备

    源设备:

      硬盘:文件 File开头

      内存:数组,字符串

      键盘:System.in

      网络:Socket

    目的设备:

      硬盘:文件 File开头

      内存:数组,字符串

      屏幕:System.out

      网络:Socket

  (4)是否需要额外功能

      额外功能:

        转换吗?转换流:InputStreamReader OutputStreamWriter

        高效吗?缓冲区对象。BuffererXXX

  

  

[Day24]IO(转换流、缓冲流)的更多相关文章

  1. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  2. Java基础知识强化之IO流笔记39:字符流缓冲流之复制文本文件案例01

    1. 字符流缓冲流之复制文本文件案例 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamRe ...

  3. IO流(字节流,字符流,缓冲流)

    一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流   这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:   二:字符字节 ...

  4. Java基础知识强化之IO流笔记40:字符流缓冲流之特殊功能 [ newLine() / readLine() ]

    1. 字符缓冲流的特殊方法 BufferedWriter: public void newLine():根据系统来决定换行符 BufferedReader: public String readLin ...

  5. Java基础知识强化之IO流笔记38:字符流缓冲流之BufferedWriter / BufferedReader使用

    1. 字符流缓冲流: 字符流为了高效读写,也提供了对应的字符缓冲流. BufferedWriter:字符缓冲输出流 BufferedReader:字符缓冲输入流 2. BufferedWriter使用 ...

  6. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  7. Java基础IO类之缓冲流

    首先要明确一个概念: 对文件或其他目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处是:能够高效的读写信息,原理是先将数据先缓冲起来,然后一起写入或者读取出来. 对于字节: BufferedInp ...

  8. IO Streams:缓冲流

    我们迄今为止看到的大多数示例都使用无缓冲的I / O.这意味着每个读或写请求都由底层操作系统直接处理.这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作. 为了 ...

  9. java 文件字节和字符流 缓冲流

    流的原理 1) 在 Java 程序中,对于数据的输入/输出操作以“流”(stream) 方式进行:2) J2SDK 提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据 ...

随机推荐

  1. 翻译NYOJ

    #include<iostream> #include<string.h> #include<stdio.h> using namespace std; ; int ...

  2. Flask开发微电影网站(六)

    1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf ...

  3. djjango安装及其 操作命令

    一 首先掌握HTTP协议 HTTP四大特性: 1 基于tcp/IP作用在应用层之上的协议 2 基于请求响应 3 无状态(不识别来的用户的状态) 4 无连接(请求完返回响应后就断开) 数据格式: 请求 ...

  4. Java Callable使用

    1. 创建线程的三种方式: 继承Thread,重写run方法 实现Runnable接口,重新run方法 实现Callable接口,重写call方法 2. Callable接口实际上是属于Executo ...

  5. Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  6. ansible的lookup

    lookup路径: /usr/lib/python2.7/site-packages/ansible/plugins/lookup 所有的lookup插件列表cartesian.py dnstxt.p ...

  7. Code First

    Add-Migration ****** Update-Database –Verbose

  8. 【BZOJ4589】Hard Nim(FWT)

    题解: 由博弈论可以知道题目等价于求这$n$个数$\^$为0 快速幂$+fwt$ 这样是$nlog^2$的 并不能过 而且得注意$m$的数组$\^$一下会生成$2m$ #include <bit ...

  9. 前端js总结

    1 . 在controller层中的@ResponseBody注解中返回的要是一个对象而不能用字符串. 2 . 给html页面的按钮添加单击事件 $(#login).click( function l ...

  10. twig模板基本学习

    twig基本语法 1.输出 {{    }} 2.判断 {%    %} 3.注释 {#      #} 具体使用时参考https://twig.symfony.com/doc/2.x/官网文档进行查 ...