文档章节

流(IO)

xili80
 xili80
发布于 2017/07/22 17:25
字数 1063
阅读 2
收藏 0

流的概念

流就是程序和设备之间嫁接起来的一根用于数据传输的管道,这个管道上有很多按钮,不同的按钮上有不同的功能。      这根管道就是流。

节点流:   也叫作原始流。     处理流: 也叫作包裹流。

四大基本抽象流

   InputStream和OutputStream 读写数据的单位是一个字节。

   Reader和Writer读写数据的单位是一个字符。

  Java中一个字符占两个字节,  凡是以stream结尾的都是字节流。

InputStream

 

InputStream流中常用的方法

       public   int read()    throw  IOException

              读取一个字节并以整数的形式返回。

              如果读取到输入流的末尾则返回-1。

       public int read  (byte[] b)  throw IOException

              从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。以整数的形式返回实际读取的字节数。

              如果b的长度为0, 则不读取任何字节并返回0; 如果流位于文件末尾而没有可用的字节,则返回-1。

        eg:     FileInputStream   fs   = new  FileInputStream(:"d:\\ share\\xuexi.txt"); 

                  len = fis.read(buf);   //   从fis流所关联的d:\\share\\xuexi.txt 文件中读取数据,并将读取出来的数据写入buf数组中,返回值是实际写入buf数组的字节个数,如果读到文件的结尾则返回-1。 

        public   int  read (byte[] b,  int  off,   int len)   throws  IOException             

                 从输入流中最多读取len个字节的数据并存入byte数组中。

                 b表示读取的数据要存入的数组的名字  。

                 off 表示第一个读取的数据要存入的位置,是下标。

                  len表示最多能读取的字节数。

                将输入流所关联到的设备中读取的第一个字节存储在元素b[off]中,下一个字节存储到到b[off+1]中,以此类推。读取的字节数最多等于 len。

                尝试读取len个字节,但读取的字节也可能小于该值,以整数的形式返回实际读取的字节数。

                 如果读到了文件的末尾,则返回-1。

        void  close()    throws   IOException

                 关闭此输入流并且释放与该流关联的所有系统资源。

        long  skip(long n)   throws  IOException 

                跳过和丢弃此输入流中数据的n个字节  (这个很少用)


OutputStream 

     

 

Reader

 

Writer

 

缓冲流

         缓冲流概述:  缓冲流就是带有缓冲区的输入输出流。

         缓冲流可以显著的减少我们对IO访问次数,保护我们的硬盘。

         缓冲流本身就是处理流,缓冲流必须得依附于节点流。

 

转换流

OutputStreamWriter 流是把OutputStream 流转化成Writer 的流

InputStreamReader 流是把 InputStream 转化成 Reader 

OutputStreamWriter  和 InputStreamReader 流都是处理流(包裹在节点流之上的流)

数据流

DataOutputStream 是处理流 ,必须依附于OutputStream.

 

print流

      PrintStream在OutputStream基础之上提供了增强的功能。既可以方便的输入各种类型的数据(不仅限于byte型)的格式化表示。

     PrintStream 重载了Print和Println方法,用于各种不同类型数据的格式化输出。

     格式化输出指的是将一个数据用其字符串格式输出。

     DataOutputStream 中的writeXXX(data) 方法是把data咋内存中的二进制数据写入文件。

    PrintStream中的 Println(data) 写出的是该数据格式化后的字符串。

 

object流(对象的序列化)

       对象的序列化指的是:把一个Object对象直接转化成字节流,然后把这个字节流直接写入本地硬盘或者网络中。

       如果想要把某个对象序列化,就必须实现Serializable接口。

       Serializable接口中并没有任何的方法,该接口被称为标记接口,如果一个类实现了Serializable 接口,潜在的含义就是告诉编译器这个类是允许被序列化的。

        在Java中  transient 修饰的成员变量在对象序列化时不被序列化。

            eg: transient    public int = 4;   //   表示 sscore 成员不能被序列化,所谓不能被序列化就是指:该成员调用ObjectOutputStream 的 writeObject() 时不会被保存,调用 ObjectInputStream的readObject()方法时不会被读取。

            

总结 

               

 

 

 

      

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 网络编程
下一篇: 容器
xili80
粉丝 0
博文 14
码字总数 74390
作品 0
郑州
私信 提问
Java基础笔记21

21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2.FileR...

dreamkong
2017/12/11
0
0
Java基础笔记22

22.01_IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个...

dreamkong
2017/12/12
0
0
Java IO 系列(01)-Java IO概述

引言 趁着有时间,看了下JDK1.7 API 对Java.lang.io包下经常用到的Java IO处理类做了一些总结性的东西,希望能对Java开发者有点用。 2.Java IO概述 所谓IO,也就是Input与Output的缩写。在j...

kukudeku
2016/09/23
45
0
java IO流

IO(Input Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中。 完整IO流结构图如下: IO流分类 1. 处理的数据单位不同: (1)字符流 ...

iborder
2016/09/05
38
0
java基础io流——配角也风流(不求甚解)

本章简单介绍几个常见的io流派生。 1:数据操作流(操作基本类型数据的流)(理解) 代码示例: 2:内存操作流(理解) 用于处理临时存储信息的,程序结束,数据就从内存中消失。 代码示例: 注:查看...

潇潇漓燃
05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jrebel 激活服务,在springboot上面的进行热部署

1.安装JRebel 下载Jrebel插件,官网需要翻墙下载,需要的可以在csdn的下载区去进行下载 打开idea,File->settings 然后重启idea 2.破解JRebel 首先HELP -> JRebel -> Activation 在jrebel se...

glen_xu
48分钟前
1
0
设置版头的图片+网页布局

1.div的background-image(推荐) 2.div+image 1.是只有部分图,2是压图 1.frame 2.js(推荐) 因为frame不好设置大小

木之下
52分钟前
0
0
MyBatis组件之缓存实现及使用

一 .概述 先讲缓存实现,主要是mybatis一级缓存,二级缓存及缓存使用后续补充 Mybatis缓存的实现是基于Map的,从缓存里面读写数据是缓存模块的核心基础功能; 除核心功能之外,有很多额外的附...

Ala6
今天
1
0
SpringBoot中使用@RequestBody时如何自定义需要转换的日期格式

SpringBoot序列化和反序列化Json时默认使用的是Jackson(例如使用@RequestBody反序列化前端传递过来的Json字符串时), 当我们前端使用Json字符串传递到后台时日期格式可能是时间戳(即long类...

帅得拖网速
今天
1
0
可自定义扩展底部列表对话框ListBottomSheetDialogFragment

因为需要,为了方便,构建了一个可以自定义扩展的底部列表对话框,可以应付大部分场景。 效果图如下: 1.默认实现: 2.自定义列表实现 3.自定义头部和列表实现 一.可实现功能 1.默认可实现通...

明月春秋
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部