处理流之一:缓冲流
1.为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,
会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。

2.缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:
➢BufferedInputStream 和 BufferedOutputStream
➢BufferedReader 和 BufferedWriter

1.当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区。
2.当使用BufferedInputStream读取字节文件时,BufferedInputStream会一次性从文件中读取8192个(8Kb),
存在缓冲区中,直到缓冲区装满了,才重新从文件中读取下一个8192个字节数组。
3.向流中写入字节时,不会直接写到文件,先写到缓冲区中直到缓冲区写满,
BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。
4.使用方法lush()可以强制将缓冲区的内容全部写入输出流。
关闭流的顺序和打开流的顺序相反。只要关闭最外层流即可,关闭最外层流也会相应关闭内层节点流。
5.flush()方法的使用:手动将buffer中内容写入文件。
6.如果是带缓冲区的流对象的close()方法,不但会关闭流,还会在关闭流之前刷新缓冲区,关闭后不能再写出。

处理流之二:转换流

1.转换流提供了在字节流和字符流之间的转换。
2.Java API提供了两个转换流:
InputStreamReader:将InputStream转 换为Reader。
OutputStreamWriter:将Writer转 换为OutputStream。
3.字节流中的数据都是字符时,转成字符流操作更高效。
4.很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。

InputStreamReader概述:
●实现将字节的输入流按指定字符集转换为字符的输入流。
●需要和InputStream “套接”。
●构造器:
➢public InputStreamReader(InputStream in)
➢public InputSreamReader(InputStream in,String charsetName)
如:Reader isr = new InputStreamReader(System.in, 'gbk" );gbk为指定字符集。

OutputStreamWriter概述:
●实现将字符的输出流按指定字符集转换为字节的输出流。
●需要和OutputStream“套接”。
●构造器:
➢public OutputStreamWriter(OutputStream out)
➢public OutputSreamWriter(OutputStream out, String charsetName)

处理流之三:标准输入、输出流

1.System.in和System.out分别代表了系统标准的输入和输出设备。
2.默认输入设备是:键盘,输出设备是:显示器。
3.System.in的类型是InputStream。
4.System.out的类型是PrintStream,其是OutputStream的子类
FilterOutputStream的子类。
5.重定向:通过System类的setIn,setOut方法对默认 设备进行改变。
➢public static void setln(InputStream in)
➢public static void setOut(PrintStream out)

 public static void main(String[] args) {
         BufferedReader br = null;
         try {
             InputStreamReader isr = new InputStreamReader(System.in);
             br = new BufferedReader(isr);

             while (true) {
                 System.out.println("请输入字符串:");
                 String data = br.readLine();
                 if ("e".equalsIgnoreCase(data) || "exit".equalsIgnoreCase(data)) {
                     System.out.println("程序结束");
                     break;
                 }

                 String upperCase = data.toUpperCase();
                 System.out.println(upperCase);

             }
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
             if (br != null) {
                 try {
                     br.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }

             }
         }
     } 

处理流之四:打印流
●实现将基本数据类型的数据格式转化为字符串输出。
●打印流: PrintStream和PrintWriter。
➢提供了一系列重载的print()和printn()方法,用于多种数据类型的输出。
➢PrintStream和PrintWriter的输 出不会抛出IOException异常。
➢PrintStream和PrintWriter有 自动flush功能。
➢PrintStream打印的所有字符都使用平台的默认字符编码转换为字节。
在需要写入字符而不是写入字节的情况下,应该使用PrintWriter类。
➢System.out返 回的是PrintStream的实例。

 public void test() {
         PrintStream ps = null;
         try {
             FileOutputStream fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
             // 创建打印输出流,设置为自动刷新模式(写入换行符或字节 '\n' 时都会刷新输出缓冲区)
             ps = new PrintStream(fos, true);
             if (ps != null) {// 把标准输出流(控制台输出)改成文件
                 System.setOut(ps);
             }

             for (int i = 0; i <= 255; i++) { // 输出ASCII字符
                 System.out.print((char) i);
                 if (i % 50 == 0) { // 每50个数据一行
                     System.out.println(); // 换行
                 }
             }

         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } finally {
             if (ps != null) {
                 ps.close();
             }
         }

     }

处理流之五:数据流

处理流之六:对象流

使用对象流序列化对象:

java.io.Serializable接口:

●实现了Serializable接口的对象,可将它们转换成一系列字节,
并可在以后完全恢复回原来的样子。这一过程亦可通过网络进行。
这意味着序列化机制能自动补偿操作系统间的差异。
●可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一 台Unix机器,
然后在那里准确无误地重新“装配”。不必关心数据在不同机器上如何表示,
也不必关心字节的顺序或者其他任何细节。
●由于大部分作为参数的类如String、 Integer等都实现 了java.io.Serializable的接口,
也可以利用多态的性质,作为参数使接口更灵活。

IO流之处理流用法总结的更多相关文章

  1. 【JAVA IO流之字符流】

    一.概述. java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中.流按照操作数据不同分为两种,字节流和字符流.流按照流向分为输入流,输出流. 输入输出的“入”和“出”是相当于内存来 ...

  2. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

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

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

  4. java IO流 之 其他流

    一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一).   public class ByteArrayInputStream extends ...

  5. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  6. JAVA里面的IO流(一)分类2(节点流和处理流及构造方法概要)

    IO流根据处理对象的不同分为节点流和处理流. 直接对文件进行处理的流为节点流: 对流进行包装从而实现对文件的优化处理的流为处理流. 节点流类型: 可以看出,节点流主要分这几大类: 文件流 文件流构造方 ...

  7. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

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

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

  9. Java:IO流之转换流

    IO流的基本流情况: 字符流:                字符流缓冲区: FileReader              BufferedReader FileWriter             ...

随机推荐

  1. js实现圆形的碰撞检测

    文章地址:https://www.cnblogs.com/sandraryan/ 碰撞检测这个东西写小游戏挺有用der~~~ 注释写的还挺全,所以就不多说了,看注释 这是页面结构.wrap存放生成的小 ...

  2. ACM学习网站、

    转载:http://www.cnblogs.com/zhourongqing/archive/2012/05/24/2516180.html http://61.187.179.132/JudgeOn ...

  3. Tomcat停,图片名字中文显示不出来

    Tomcat停,图片名字中文显示不出来     Tomcat下,图片名字中文显示不出来在tomcat的server.xml中加入URIEncoding="utf-8"<Con ...

  4. 扶桑号战列舰 (单调栈+线段树区间更新懒惰标记 or 栈)

    传送门 •题目描述 题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据“个舰优越主义”,建造了扶桑级战列舰,完工时为当时世界上武装最为强大的舰只. 同时,扶桑号战列舰 ...

  5. H3C 单路径网络中环路产生过程(3)

  6. 「THUPC 2019」不等式 / inequality

    https://loj.ac/problem/6620 高中数学好题.. |kx+b|的函数图像很直观,直接考虑函数图像: 一定只有一段极小值点! 这个点就是最小值了 特点:斜率为0! 而且发现,如果 ...

  7. windows环境下pgsql的安装与使用

  8. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(10)之素材管理

    源码下载地址:http://www.yealuo.com/Sccnn/Detail?KeyValue=c891ffae-7441-4afb-9a75-c5fe000e3d1c 素材管理模块也是我们这个 ...

  9. VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  10. python 多线程两种实现方式,Python多线程下的_strptime问题,

    python 多线程两种实现方式 原创 Linux操作系统 作者:杨奇龙 时间:2014-06-08 20:24:26  44021  0 目前python 提供了几种多线程实现方式 thread,t ...