2019独角兽企业重金招聘Python工程师标准>>>

1 基本概念

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

根据处理数据类型的不同分为:字符流和字节流

根据数据流向不同分为:输入流和输出流

字符流和字节流

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

字节流和字符流转换

1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。

2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换

* An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset.  The charset that it uses may be specified by name or may be given explicitly, or the platform's default charset may be accepted.

    public InputStreamReader(InputStream in, String charsetName)throws UnsupportedEncodingException{super(in);if (charsetName == null)throw new NullPointerException("charsetName");sd = StreamDecoder.forInputStreamReader(in, this, charsetName);}

* An OutputStreamWriter is a bridge from character streams to byte streams:

参考:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html

几点原则

1、不管是输入还是输出流,使用完毕后要close(),如果是带有缓冲区的输出流,应在关闭前调用flush()。

2、应该尽可能使用缓冲区,来减少IO次数,以提高性能。

3、能用字符流处理的不用字节流

4. 要缓冲:BufferedInputStream, BufferedOutputStream( 字节流)

BufferedReader, BufferedWriter( 字符流)

转载于:https://my.oschina.net/hanruikai/blog/331680

java IO知识总结相关推荐

  1. 【Java IO知识】读取中文乱码问题解决

    读取文件主要是要设置读取的输入流如InputStreamReader时要设置读取的解码格式,要和文件本身的编码格式相同,这样读取出来的才不会乱码. InputStreamReader reader = ...

  2. Java基础知识回顾之六 ----- IO流

    前言 在上一篇文章中,回顾了Java的多线程.而在本篇文章中主要介绍Java IO的相关知识. IO的介绍 什么是IO? IO的名称又来是Input与Output的缩写,也就是输入流和输出流.输入流用 ...

  3. java io nio aio_Java IO、NIO、AIO知识总结

    本文主要讲述下自己对IO的理解,对IO的用法和细则可能没有顾虑到. 本文的理解基于以下几篇文章,他们对各自部分都讲的很细,对我理解IO提供了很大帮助. 该文主要讲解了Java IO的类体系以及他们各自 ...

  4. JAVA IO基本知识

    这里来说下java io的基本知识. 文章目录 主要内容 IO体系 主要内容 (1) 按操作方式分类结构图: (2)按操作对象分类结构图 IO体系

  5. 【JAVA核心知识】6.1: JAVA IO基础

    IO基础 1 输入与输出 2 流 2.1 字节流 2.2 字符流 3 阻塞IO与非阻塞IO 3.1 阻塞IO 3.2 非阻塞IO 3.3 生活举例 4 同步IO与异步IO 4.1 同步IO 4.2 异 ...

  6. java用输入流创建数据文件_java开发知识IO知识之输入输出流以及文件

    java开发知识IO知识之输入输出流以及文件 一丶流概述 流十一组有序的数据序列.根据操作的类型,可以分为输入流跟输出流两种. IO(input/output)输入/输出流提供了一条通道程序.可以使用 ...

  7. Java基础知识第二讲:Java开发手册/JVM/集合框架/异常体系/Java反射/语法知识/Java IO

    Java基础知识第二讲(Java编程规范/JVM/集合框架/异常体系/Java反射/语法知识/Java IO/码出高效) 分享在java学习及工作中,常使用的一些基础知识,本文从JVM出发,讲解了JV ...

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

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

  9. JAVA(IO流)知识整理

    IO (Input Output)流 IO流用来处理设备之间的数据传输: JAVA对数据的操作是通过流的方式: JAVA对于操作流的对象都在IO包中: 流按操作数据分为两种:字节流和字符流: 流按流向 ...

最新文章

  1. WebLogic集群配置
  2. 【一周入门MySQL—4】数据库进阶练习
  3. 多线程中Local Store Slot(本地存储槽)[转]
  4. java io流(字符流) 文件打开、读取文件、关闭文件
  5. 双谷人才财务管理(序)
  6. 绑定注意事项——数据源的属性
  7. [HttpPost] vs [AcceptVerbs(HttpVerbs.Post)]
  8. argparse模块用法
  9. 如何在 Pr 中创建动作序列?
  10. 移动端的头部标签和meta
  11. 第三部分 Makefile 的工程组织
  12. Django前端使用ECharts完成数据可视化
  13. ipv4的地址位数_ipv4
  14. 中英文双标题latex
  15. 关于PDF嵌入背景图的实现
  16. 项目管理之人力资源管理
  17. python 实现 复制文件 及 复制文件夹
  18. java uml类图虚线实线_终于明白六大类UML类图关系了
  19. 编程之美----小飞的电梯调度算法
  20. 成为IT精英,我奋斗了七年

热门文章

  1. 获取Gitlab项目的Token
  2. 分布式架构spring mvc +mybatis +shiro+ Activiti +Alibaba Druid
  3. UTF-8 BOM头
  4. weblogic集群安装心得-程序包发布
  5. C++走向远洋——61(项目一、排序函数模板)
  6. json-lib把XML转化为json
  7. .NET中SQL Server数据库连接方法
  8. ROCK 聚类算法‏
  9. .Net Web项目安装包制作(三)补充说明
  10. C++中MessageBox()的详细用法(转载)