文档章节

流(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

没有更多内容

加载失败,请刷新页面

加载更多

redis-hash

哈希类型是指健值本身又是一个键值对结构 基本命令: hset key field value 设置值 hget(获取),hdel(删除),hlen(计算field个数),hmget(批量设置),hexists(是否存在),hkeys(获取所有的...

拐美人
14分钟前
1
0
简单的svm例子

数据来源:https://github.com/oumiga1314/Coursera-ML-AndrewNg-Notes/blob/master/code/ex6-SVM/data/ex6data1.mat import pandas as pd import numpy as np import scipy.io as sio impor......

南桥北木
18分钟前
0
0
android 关于View的一些整理

1、Button text的值为英文时,会自动转换成大写。如需取消,设置android:textAllCaps="false" 2、控件的可见性 可以在layout的配置文件中,配置android:visibility属性 调用setVisibility()...

西米小娅
28分钟前
0
0
Spring JDBC数据源分析

Spring数据源分析 分析这样一段代码: package com.jason.spring.datasource.jdbc;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframew......

宸明
36分钟前
1
0
FatJar:适用于sdk多module打包和合并多个jar的gradle插件

usage: 1.下载fatJar.gradle放置于project根目录 2.在project的build.gradle中添加依赖和配置: apply from: 'fatJar.gradle'buildscript { dependencies { classpath 'xyz......

SuShine
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部