InputStream是抽象基类,所以它不可以创建对象,但它可以用来“接口化编程”,因为大部分子类的函数基类都有定义,所以利用基类来调用函数。

FileInputStream是用来读文件数据的流,所以它需要一个文件对象用来实例化,这个文件可以是一个File对象,也可以是文件名路径字符串.【这里文件不存在会抛错】

BufferedInputStream是一种封装别的流以提高效率的流,所以它的初始化需要一个的InputStream流对象。

字节输出流:

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

OutputStream

FileOutputStream

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

他们的区别与用途:

OutputStream是字节输出流的基类, OutputStream作为基类,给它的基类定义了几个通用的函数:

write(byte[] b):将b的长度个字节数据写到输出流中。

write(byte[] b,int off,int len):从b的off位置开始,获取len个字节数据,写到输出流中。

flush():刷新输出流,把数据马上写到输出流中。

close():关闭流,释放系统资源。

FileOutputStream是用于写文件的输出流,它除了可以使用基类定义的函数外,还实现了OutputStream的抽象函数write(int b):

write(int b):将b转成一个字节数据,写到输出流中。

BufferedOutputStream像上面那个BufferedInputStream一样,都可以提高效率。它除了可以使用基类定义的函数外,它还实现了OutputStream的抽象函数write(int b):

write(int b):将b转成一个字节数据,写到输出流中。

使用:

OutputStream是抽象基类,所以它不能实例化,但它可以用于接口化编程。

FileOutputStream是用于写文件的输出流,所以它需要一个文件作为实例化参数,这个文件可以是File对象,也可以是文件路径字符串。【如果文件不存在,那么将自动创建。】【FileOutputStream实例化时可以给第二个参数,第二个参数是是否使用追加写入默认,为true时代表在原有文件内容后面追加写入数据,默认为false】

BufferedOutputStream需要一个输出流作为实例化参数。

补充:

上面的一些函数,考虑到效率问题,上面的子类可能会重写基类的函数,但功能基本是不变的。

更多关于字节流的函数与用法可以参考jdk文档。

字符流

字符流的类通常以reader和writer结尾

字符输入流:

常见的字符输入流有:

Reader

InputStreamReader

FileReader

BufferedReader

他们的区别与用途:

Reader是字符输入流的抽象基类 ,它定义了以下几个函数:

read() :读取单个字符,返回结果是一个int,需要转成char;到达流的末尾时,返回-1

read(char[] cbuf):读取cbuf的长度个字符到cbuf这种,返回结果是读取的字符数,到达流的末尾时,返回-1

close()  :关闭流,释放占用的系统资源。

InputStreamReader 可以把InputStream中的字节数据流根据字符编码方式转成字符数据流。它除了可以使用基类定义的函数,它自己还实现了以下函数:

read(char[] cbuf, int offset, int length) :从offset位置开始,读取length个字符到cbuf中,返回结果是实际读取的字符数,到达流的末尾时,返回-1

FileReader 可以把FileInputStream中的字节数据转成根据字符编码方式转成字符数据流。

BufferedReader可以把字符输入流进行封装,将数据进行缓冲,提高读取效率。它除了可以使用基类定义的函数,它自己还实现了以下函数:

read(char[] cbuf, int offset, int length) :从offset位置开始,读取length个字符到cbuf中,返回结果是实际读取的字符数,到达流的末尾时,返回-1

readLine() :读取一个文本行,以行结束符作为末尾,返回结果是读取的字符串。如果已到达流末尾,则返回 null

使用

Reader 是一个抽象基类,不能实例化,但可以用于接口化编程。

InputStreamReader需要一个字节输入流对象作为实例化参数。还可以指定第二个参数,第二个参数是字符编码方式,可以是编码方式的字符串形式,也可以是一个字符集对象。

FileReader 需要一个文件对象作为实例化参数,可以是File类对象,也可以是文件的路径字符串。

BufferReader需要一个字符输入流对象作为实例化参数。

字符输出流:

常见的字符输出流有:

Writer

OutputStreamWriter

FileWriter

BufferedWriter

他们的区别与用途:

Writer是字符输出流的抽象基类, ,它定义了以下几个函数

write(char[] cbuf) :往输出流写入一个字符数组。

write(int c) :往输出流写入一个字符。

write(String str) :往输出流写入一串字符串。

write(String str, int off, int len) :往输出流写入字符串的一部分。

close() :关闭流,释放资源。 【这个还是抽象的,写出来是说明有这个关闭功能】

flush():刷新输出流,把数据马上写到输出流中。 【这个还是抽象的,写出来是说明有这个关闭功能】

OutputStreamWriter可以使我们直接往流中写字符串数据,它里面会帮我们根据字符编码方式来把字符数据转成字节数据再写给输出流,它相当于一个中介\桥梁。

FileWriter与OutputStreamWriter功能类似,我们可以直接往流中写字符串数据,FileWriter内部会根据字符编码方式来把字符数据转成字节数据再写给输出流。

BufferedWriter比FileWriter还高级一点,它利用了缓冲区来提高写的效率。它还多出了一个函数:

newLine() :写入一个换行符。

使用

Writer 是一个抽象基类,不能实例化,但可以用于接口化编程。

OutputStreamWriter 需要一个输入流对象作为实例化参数。

FileWriter 需要一个文件对象来实例化,可以是File类对象,也可以是文件的路径字符串。

BufferWriter

java字符的输入流_Java:字节流和字符流(输入流和输出流)相关推荐

  1. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  2. java 字符流图片_java 字节流、字符流(复制图片、复制文本)

    1.File 1)构造方法 2)创建 3)判断.获取 4)删除 2.字节流 1)字节流写数据的3种方式 FileOutputStream fos = new FileOutputStream(&quo ...

  3. java 字节流设置编码方式_java字节流和字符流编码格式(转自姚刚)

    /** * 字节流和字符流的区别, * (1)字符流带有缓冲,必须flush或close后数据才会从缓存中写入磁盘文件. * 字节流直接写文件. * (2)字符流在创建流的时候,指定编码,字节流在文件 ...

  4. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  5. java字节流转字符串_字节流与字符流的区别及相互转换

    先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形 ...

  6. Java基础(17)——字节流、字符流

    目录 第一章 IO概述 1.1 什么是IO 1.2 IO的分类 1.3 IO的流向说明图解 1.4 顶级父类们 第二章 字节流 2.1 一切皆为字节 2.2 字节输出流[OutputStream] 2 ...

  7. 系统学习JAVA第十七天(字节流、字符流、缓冲的字节流、缓冲的字符流、将字节流转换为缓冲的字符流、面向对象——>字节流转成对象)

    系统学习JAVA第十七天 第一阶段在2021.2.1结束了! 一.数据传输 IO输入和输出,硬盘之间的数据交换 1.文件读写流程 ①创建文件的容器 ②判断方向 合适的类 创建和文件之间的通道 ③ 调用 ...

  8. Java总结IO篇之字节流与字符流转化

    本篇接上篇:Java中的字符流,流的读写的细节参考上篇 本篇讲述字节流相关话题,包括字节流的读取与写出,字节流转化为字符流 1.明确是否是纯文本:纯文本 ? 字符流: 字节流 2.明确数据来源( 输入 ...

  9. java字符流输出流_JAVA语言之IO流字符串输入输出流

    本文主要向大家介绍了JAVA语言之IO流字符串输入输出流,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 概述 StringReader 字符输入流 和CharArrayReader类 ...

最新文章

  1. C++类特殊成员函数
  2. oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法
  3. centos6.5装mysql好难_centos 6.5装mysql5.7
  4. JavaScript学习笔记 - 基础排序算法
  5. stm32f103振镜_激光打标机运动控制器的设计与实现
  6. unity中简单的血条自作
  7. 【UCOSIII操作系统】任务篇(2)相关API函数
  8. TEXT部分文字颜色的改变
  9. java程序员3-5年职业规划,附源代码
  10. AHRS简要说明及使用例程(外加踩坑)
  11. HDOJ Saving HDU JAVA 2111
  12. springboot 配置热启动
  13. 随机过程、马尔可夫链 详解
  14. 北京林业大c语言程序设计考试试题,2016年北京林业大学信息学院程序设计语言、数据结构(上机操作)复试笔试最后押题五套卷...
  15. NetSdkDemo - 界面属性 和大小设置
  16. Poly Network被攻击事件中来自黑客的 25 段对话
  17. 2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写
  18. 未来科幻作文写法及范文
  19. open-dataset开源数据集
  20. B+树的生成过程 怎么去看懂B+树

热门文章

  1. blue html中转换,BlueFox Free PDF to HTML Converter(PDF文件转换软件)
  2. java技术学习内容_Java开发主要都学些什么内容?
  3. iphone屏幕上的圆圈怎么设置_iPhone手机屏幕突然变暗或者黑屏怎么办?看这里你就知道该怎么办...
  4. python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】
  5. 写了 10 年代码之后,我学到的 7 个绝对真理
  6. 多进程模块multiprocessing
  7. python中向类中动态添加新特性及删除属性方法
  8. 如何 给给软件开发 添加 代理_如何与软件开发公司有效沟通
  9. 吴恩达,确诊新冠阳性!
  10. 论文浅尝 | LGESQL: 结合线性有向图以及普通有向图的自然语言转换SQL语句模型...