字符流相关

字符流基本上可以类比字节流 只不过是将字节流的byte 换为char。

最根本的两个类是Reader以及Writer

Reader的子类有:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

Writer的子类有:

BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

特殊的类:

InputStreamReader以及OutputStreamWriter 通过这两个类可以实现字节流与字符流之间的转化,前提是本身读入的是字符串。

将字节流转化为字符流

public InputStreamReader(InputStream in)

利用指定的编码格式cs 将字节流转化为字符流

InputStreamReader(InputStream in, Charset cs)

OutputStreamWriter的使用也是类似的方式

例子:


package com.characterStream.bufferWriter;


import java.io.*;


public class streamTest {


public static void main(String[] args) throws Exception {


FileOutputStream fos=new FileOutputStream("F:\\filetest.txt");


//这里将字节流转化为字符流


OutputStreamWriter osw=new OutputStreamWriter(fos);


//这里是字节流的过滤流


BufferedWriter bw=new BufferedWriter(osw);


bw.write("the test of BufferedStream");


bw.write('\n');


bw.write("test is finished");


//用字符流的时候这里的close就变得更加关键了


//只有close的时候 才会将bufferedwriter中的内容写入到文件中


//否则的话 文件中是没有什么实际内容的


bw.close();


//再通过字符流从外部读入


FileReader fr=new FileReader("F:\\filetest.txt");


BufferedReader br=new BufferedReader(fr);


//这个是每次读入一行数据


String str;


while((str=br.readLine())!=null){


System.out.println(str);


}


br.close();


//将标准输入设备包装成为字节流 每次在控制体上输入的信息又会再次打印出来


InputStreamReader isr=new InputStreamReader(System.in);


BufferedReader bfr=new BufferedReader(isr);


//注意这种输入流的通用的格式 读到最后一行的话 就会出来一个 null 表示已经//到了最后一行


while((str=bfr.readLine())!=null){


System.out.println(str);


}


bfr.close();


}


}

 

注意字符流中由于缓冲区的使用,只有在close的时候才会将字符流中的内容读进来或者读出去,加上close是非常关键的。

关于包装模式在IO中的应用

之前也看到了具体的IO过滤流的一些典型的写法 比如:

DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("F:\\filetest.txt")));

但是为什么能这样写,就是说为什么能写成这么一种嵌套的模式,这就要涉及到Java的设计模式,这里面应用到的就是包装模式具体见:

http://www.cnblogs.com/Goden/p/3901664.html

Java IO(3)的更多相关文章

  1. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  2. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  3. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

  4. java Io流向指定文件输入内容

    package com.hp.io; import java.io.*; public class BufferedWriterTest{ public static void main(String ...

  5. java Io文件输入输出流 复制文件

    package com.hp.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...

  6. java Io流更新文件内容

    package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class FileOut ...

  7. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. java.io.NotSerializableException: test.io.file.Student

    java.io.NotSerializableException: test.io.file.Student    at java.io.ObjectOutputStream.writeObject0 ...

  9. java.io.IOException: mark/reset not supported

    java.io.IOException: mark/reset not supported at java.io.InputStream.reset(InputStream.java:348) at ...

  10. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

随机推荐

  1. <meta>标签中http-equiv属性的属性值X-UA-Compatible详解

    X-UA-Compatible是针对IE8新加的一个设置,对于IE8之外的浏览器是不识别的,这个区别与content="IE=7"在无论页面是否包含<!DOCTYPE> ...

  2. Webpack和Gulp对比

    Webpack和Gulp对比 作者 彬_仔 关注 2016.10.19 22:42* 字数 8012 阅读 2471评论 18喜欢 68 在现在的前端开发中,前后端分离.模块化开发.版本控制.文件合并 ...

  3. java 快速开发平台 有代码生成器 springmvc SSM后台框架源码

    .   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限      角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.      按钮权限: 给角色分配按钮权限.2 ...

  4. 2018-5-5-UWP-和-WPF-对比

    title author date CreateTime categories UWP 和 WPF 对比 lindexi 2018-05-05 17:23:33 +0800 2018-04-16 20 ...

  5. 修改 linux 默认字符集

    [root@eric6 ~]# cat /etc/sysconfig/i18n //查看 linux 默认的字符集,默认是 UTF-8 LANG="zh_CN.UTF-8" cp ...

  6. 脚本_修改 Linux 系统的最大打开文件数量

    #!bin/bash#作者:liusingbon#功能:修改 Linux 系统的最大打开文件数量#追加两行配置参数到文件/etc/security/limits.conf的末尾,修改最大打开文件数量为 ...

  7. 初学Java 数组统计字母

    public class CountLetterInArray { public static void main(String[] args) { char[] chars = createArra ...

  8. eclipse 代码提示快捷键 alt+/

    eclipse (ALT+/)1.选择Eclipse菜单栏中的Window->preferences: 2.选择General->keys; 3.在右侧中间的窗体中点击word compl ...

  9. 22pygame 安装

    实战步骤 pygame 快速体验 飞机大战 实战 确认模块 --pygame pygame 就是一个 Python 模块, 专为电子游戏设计 提示 : 学习第三方模块, 通常最好的参考资料就在官方网站 ...

  10. css 伪类选择器:checked实例讲解

    css :checked伪类选择器介绍 css :checked伪类选择器用于选择匹配所有被选中的单选按钮(radio)或复选框(checkbox),你可以结合:checked伪类选择器和:not选择 ...