文档章节

流(IO)

xili80
 xili80
发布于 2017/07/22 17:25
字数 1063
阅读 2
收藏 0
点赞 0
评论 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
博文 9
码字总数 74390
作品 0
郑州
黑马程序员_IO

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ------......

072 ⋅ 2014/07/16 ⋅ 0

Java基础笔记21

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

dreamkong ⋅ 2017/12/11 ⋅ 0

Java基础笔记22

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

dreamkong ⋅ 2017/12/12 ⋅ 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 ⋅ 0

java IO流

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

iborder ⋅ 2016/09/05 ⋅ 0

java基础io流——配角也风流(不求甚解)

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

潇潇漓燃 ⋅ 05/30 ⋅ 0

Java IO包装流如何关闭?

问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: ...

小叮当_加V ⋅ 2016/12/20 ⋅ 0

Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类

一.Properties 类(java.util) 概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,properties集合的key和value都是固定的数据类型 (String),该集合提供...

老胡2015 ⋅ 2017/06/26 ⋅ 0

IO流 流的到底是什么?

在下初学Java到现在也有1年了,刚开始学只知道io流很重要,io流的各种操作方法,io流可以通过网络传输数据,学啊学,学会了io流的操作。但刚才忽然一下,流到底是什么?以Java为例,io流大家...

唱不完的离歌 ⋅ 2016/09/06 ⋅ 11

java学习计划

源于传智播客毕向东老师的教学计划: day01-01-基本常识 day01-02-Java的跨平台性 day01-03-Java环境搭建(安装) day01-04-Java环境搭建(环境变量配置) day01-05-Java环境搭建(环境变量配置技...

Bony ⋅ 2016/05/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IOS-UI UI初步代码布局添加事件

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。...

京一 ⋅ 32分钟前 ⋅ 0

浅谈OpenDaylight的二次开发

OpenDaylight作为一款开源SDN网络控制器,依托于强大的社区支持以及功能特性,成为了目前主流的SDN网络控制器开发平台。在比较稳定的OpenDaylight Helium版本中,已经为开发者提供了大量的网...

wangxuwei ⋅ 41分钟前 ⋅ 0

API 开发中可选择传递 token 接口遇到的一个坑

在做 API 开发时,不可避免会涉及到登录验证,我使用的是jwt-auth 在登录中会经常遇到一个token过期的问题,在config/jwt.php默认设置中,这个过期时间是一个小时,不过为了安全也可以设置更...

等月人 ⋅ 42分钟前 ⋅ 0

Java NIO之文件处理

程序要操作本地操作系统的一个文件,可以分为以下三个部分: 对文件位置的操作 对文件的操作 对文件内容的操作 其中,对文件内容的操作在 Java NIO之Channel 中已经有了介绍,通过FileChann...

士别三日 ⋅ 47分钟前 ⋅ 0

Maven的pom.xml配置文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.......

小海bug ⋅ 今天 ⋅ 0

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 今天 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 今天 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 今天 ⋅ 0

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 今天 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部