1 字节流
InputStream                  ->FileInputStream
OutputStream                 ->FileOutputStream

2 . 字符流
Reader -> BufferedReader     -> LineNumberReader 
       -> InputStreamReader  -> FileReader

Writer -> BufferedWriter
       -> OutputStreamWriter -> FileWriter
InputStreamReader   OutputStreamWriter  为转换流,FileReader FileWriter为其子类

如何选用哪种流读取文件?
IO流分为字符流 与 字节流,根据读写文件确定使用哪一种流,比如
读取文件是否为文本:
     是:用字符流
    不是:用字节流

何时使用转换流?
1.
如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件
比如:

当我们使用默认GBK编码保存文本时,下面2句代码其实是一样的效果,

new OutputStreamWriter(new FileOutputStream("out.txt"))

new FileWriter("out.txt")

当要求保存为其他编码比如UTF-8时,就要这样写

new OutputStreamWriter(new FileOutputStream("out.txt"),"UTF-8")

而如果要读取一个UTF-8编码的文本文件时,同样的要用

new InputStreamReader(new FileInputStream("in.txt"),"UTF-8");

而不能用new FileWriter("in.txt")

2.

当文件是字节文件时:
     读取:提高效率用BufferedReader的独有快速方法时,需要转换。FileInputStream BufferedReader
     输出:提高效率一般用BufferedWriter缓存,需要转换。FileOutputStream  BufferedWriter
当文件是字符流时:需要转换。
计算机处理的是字节数据
          读取时:将字符转换为字节,FileReader  BufferedRead
          输出时:将字节转换为字符,FileWriter BufferedWriter
总之,不论是字节文件还是字符文件,提高效率一般会用转换流的。

Java数据流格式转换的更多相关文章

  1. Java日期格式转换

    Java时间格式转换大全 import java.text.*;import java.util.Calendar;public class VeDate {/**   * 获取现在时间   *    ...

  2. Java时间格式转换工具类

    把当前时间修改成指定时间 //把当前时间修改成指定时间 public String dateUtil(Integer seconds, String dateFormatPattern){ Date ...

  3. java时间格式转换任意格式

    例如:20180918/120023转换成2018-09-18 12:00:23 //时间格式转换 public String getNomalTime(String oldTime){ String ...

  4. JAVA时间格式转换大全

    import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 ...

  5. java视频格式转换代码

    http://blog.163.com/zzf_fly/blog/static/20958915820127217443816/ package com.gkzx.online.action; imp ...

  6. java时间格式转换

    package org.shineway.com; import java.text.ParseException; import java.text.SimpleDateFormat; import ...

  7. java日期格式转换工具类

    原文地址:http://blog.csdn.net/zhiweianran/article/details/7991531 package com.ace.backoffice.utils; impo ...

  8. java视频格式转换

    项目中需要对各种视频格式转码为mp4格式,试了好多办法,最后使用ffmpeg 工具完美转码,ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 链接 ...

  9. Java日期格式转换不用发愁

    前言 Java 中日期.时间相关的类相当的多,并且分不同的版本提供了不同的实现,包括 Date . Calendar . LocalDateTime . ZoneDateTime . OffsetDa ...

随机推荐

  1. MyReport报表引擎2.6.5.0新功能

    新的文本渲染引擎,打印旋转时保持文本高精度矢量输出,打印更清晰.  watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva29uZ195ZWU=/font/5a6 ...

  2. No.4小白的HTML+CSS心得篇

    书读百遍,其义自见 遵照这句话 今天再次重新把慕课网的HTML+CSS看了一遍,再次阅读感受不再是那么陌生,从而心里默默地喜欢上了这种方式,坚持. 好了,开始今天的收获小总结 1.html中,表单&l ...

  3. HttpContext的解释意义

    在.ashx中,我们HttpContext这个词,到底是什么意思?下面给大家说说 HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息. 在处理请求执行链的各个阶段中, ...

  4. C#_会员管理系统:开发七(用户分类)

    登录界面(VIPLogin.cs)详细代码: using System; using System.Collections.Generic; using System.ComponentModel; ...

  5. js 乱码解决方案

    如果网页编码规则是utf-8,即在网页头部中可以看到如下代码: 那么js文件中如果有中文字,调用输出时就会出现乱码.解决此个问题的办法如下: 即在引用javascript输出的地方加上charset= ...

  6. SQLserver查询数据类型为ntext是空或NULL值的方法

    --为空的值text ntext select * from lf_newsNg_utf where datalength(newsContentE)=0 or datalength(newsCont ...

  7. leetcode 211. Add and Search Word - Data structure design Trie树

    题目链接 写一个数据结构, 支持两种操作. 加入一个字符串, 查找一个字符串是否存在.查找的时候, '.'可以代表任意一个字符. 显然是Trie树, 添加就是正常的添加, 查找的时候只要dfs查找就可 ...

  8. Python学习之路——字符处理(一)

    一.整数: 例如:1.10.30 整数可以做以下操作: bit_length函数:返回该整数占用的最少位数: >>> x=100 >>> x.bit_length( ...

  9. ARPU_百度百科

    ARPU_百度百科 ARPU

  10. linux搭建java环境

    建议使用EXCEL查看 准备文件 apache-tomcat-7.0.57.tar tomcat web容器 server-jre-7u76-linux-x64.tar  java jdk java执 ...