记录常见的输入输出流的写法

来源:互联网 发布:貂蝉网络剑三蘑菇 编辑:程序博客网 时间:2024/05/16 19:06

按照国际惯例 ,先来简单介绍下IO的概念和应用场景。

1.什么是IO

    Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。  
    Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。

2.IO流的优缺点

 流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。

3.IO流的应用

   在我们的项目中,程序员的工具类里永远都不缺少流的应用。比如传输文件,json交互,上传下载导入导出等等这些都需要用到。
   比如json的交互信息:
   response.setContentType("application/text;charset=utf-8");
   PrintWriter out = response.getWriter();
   out.print(jsonlist);
   out.flush();
   比如文件下载流:
    FileInputStream in = new FileInputStream(“路径”+ "\\" + “文件名”);
    OutputStream out = response.getOutputStream();
    byte buffer[] = new byte[1024];
    int len = 0;
    while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
in.close();
out.close();

4.IO流的详解

   4.1 IO流的基本模式大致都是相同的。如下图:

   4.2 分类
    流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种:
       1)  字节流:数据流中最小的数据单元是字节
       2)  字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
   4.3 java里的输入输出流
     说到这里不得不说一个方法,隆重介绍:java.lang.System。这也是我们平时经常用到的方法,最初学习java语言,或多或少的会去用system.out.println();方法去打印控制台的里的节点,从而看到自己想看的数据。(在熟练用断点之前,很爱使用这个了)
    
     该方法只能使用以下的三个静态变量,不能自己创建新的变量。out对象是经常使用的,不必赘述,这里说下in对象的使用:
      System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数据类型为InputStream。
       方法:
      1)int read()  //返回ASCII码。若,返回值=-1,说明没有读取到任何字节读取工作结束(以下的例子功能注释:等待键盘输入,键盘输入什么,就打印出什么:);
      2)int read(byte[] b)//读入多个字节到缓冲区b中返回值是读入的字节数。
      除此之外还有error的输出,感兴趣的可以自己去学习下具体的内容。
      4.4 总结
    一下两张图是别的大大进行总结的,将方法做了树状的解析和处理,看起来更加亲切和熟悉。



   IO流的东西博大精深,远远不止于简单的总结就能把知识点罗列的,故而这篇总结性质的文章会继续更新,添加。感谢大大真实的归宿的部分例子的提供。


0 0