Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节。JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据,而字符流主要用于处理文本字符等类型的输入输出。

流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。

流分为字节流和字符流。字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自动转换成字符。

综合使用java IO各种流:

Java IO中的各种流,很少单独使用,经常结合起来综合使用,既可以满足特定需求,又搞效。

Java IO 的一般使用原则 :  

一、按数据来源(去向)分类:

1 、是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader, FileWriter( 字符 )

2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字节流 )

3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )

4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字节流 )StringReader, StringWriter( 字符流 )

5 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )

二、按是否格式化输出分:

1 、要格式化输出: PrintStream, PrintWriter

三、按是否要缓冲分:

1 、要缓冲: BufferedInputStream, BufferedOutputStream,( 字节流 ) BufferedReader, BufferedWriter( 字符流 )

四、按数据格式分:

1 、二进制格式(只要不能确定是纯文本的) : InputStream, OutputStream 及其所有带 Stream 结束的子类

2 、纯文本格式(含纯英文与汉字或其他编码方式); Reader, Writer 及其所有带 Reader, Writer 的子类

五、按输入输出分:

1 、输入: Reader, InputStream 类型的子类

2 、输出: Writer, OutputStream 类型的子类

六、特殊需要:

1 、从 Stream 到 Reader,Writer 的转换类: InputStreamReader, OutputStreamWriter

2 、对象输入输出: ObjectInputStream, ObjectOutputStream

3 、进程间通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter

4 、合并输入: SequenceInputStream

5 、更特殊的需要: PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader

决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):

首先,考虑最原始的数据格式是什么: 原则四

第二,是输入还是输出:原则五

第三,是否需要转换流:原则六第 1 点

第四,数据来源(去向)是什么:原则一

第五,是否要缓冲:原则三 (特别注明:一定要注意的是 readLine() 是否有定义,有什么比 read, write 更特殊的输入或输出方法)

第六,是否要格式化输出:原则二

参考:《Java编程思想》学习笔记11——Java I/O

java 笔记(4) —— java I/O 流、字节流、字符流相关推荐

  1. java基础练习复习二:递归字节流字符流二

    本篇是基于java基础练习复习一:递归&字节流&字符流一, 如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜"55672346 ...

  2. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

  3. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  4. IO流 序列化反序列化 Properties 缓冲流 字节流 字符流

    package com.llb.io;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  5. java 字节流 字符流 的详细介绍

    1.IO流 1.1 IO流的概念 我们把数据的传输,可以看成一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存的是输入流,流出内存的叫输出流. java中I ...

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

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

  7. java基础学习_IO流03_字符流、IO流小结、案例_day21总结

    java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...

  8. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*;public class Index{public stati ...

  9. Java基础IO流之字符流的使用

    ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤.IO流分为字节流和字符流,而上一篇文章我们学习了字节流(Java基础IO流之字符流的使用),这篇文章带大家一起来学习字符流吧.对文章中描述错误的希望大家积 ...

  10. Java讲课笔记25:缓冲流、字符流与转换流

    文章目录 零.本讲学习目标 1.掌握字节流缓冲区的使用 2.掌握字节缓冲流的使用 3.掌握字符流操作文件的使用 4.掌握字符转换流的使用 一.字节流的缓冲区 1.为何引入字节流的缓冲区 2.案例演示: ...

最新文章

  1. Python+selenium 自动化高级应用篇:借助pyautogui实现web前端带轨迹拖拽功能,解决ActionChains拖拽失效问题
  2. 一些VR延迟优化方法
  3. 科大星云诗社动态20210329
  4. 三、新手Jupyter不会用,我十招教你盘她
  5. STL中的空间配置器
  6. HBase 的存储结构
  7. Can't find temporary directory:internal error
  8. oracle有sysdata,Oracle基础
  9. amie 规则挖掘_AMIE的完整形式是什么?
  10. 外部服务发现之 ingress(一) traefik 的安装使用
  11. c语言case多种情况,switch语句中有多种情况
  12. 861. Score After Flipping Matrix
  13. java程序员必备基础知识
  14. 华为机试HJ98:自动售货系统
  15. 使用Wps切分单页PDF文件为多页pdf
  16. 学生专用计算机怎么没声音,班班通电脑没声音了
  17. python接口自动化3-自动发帖(session)
  18. UE学习笔记:源码安装UE
  19. seo策略_调整移动用户的SEO策略
  20. Mac Word 修改默认的模板

热门文章

  1. 计算机毕业设计PHP高校自习室座位网上预约小程序(源码+程序+uni+lw+部署)
  2. 我爱罗__baike
  3. Java面试突击手册(2022版)每日一刷,金三银四稳了
  4. 【阿里云资讯】阿里云首席安全研究员吴翰清解读:如何保护“互联网心脏”DNS...
  5. Bootstrap 图标文件glyphicons-halflings-regular.woff未找到
  6. Pedestrian attribute recognition: A survey
  7. SetWindowPos函数使用详解
  8. java fx详解_Java fx 坐标揭秘
  9. 工业大数据之现场设备管理“数治”四部曲
  10. springBoot项目文件导出Linux下载地址报错