IkanのBolg

只想安安静静撸代码


  • Home

  • Tags

  • Categories

  • Archives

Java基础之IO(2)-OutputStream

Posted on 2018-11-10 | In Java学习笔记

概述

上一篇讲了InputStream,和InputStream相对的,InputStream是把数据从一个源中读取出来,而OutputStream是把数据输出到一个源,这个源可以是一个文件,网络,内存,终端等。和InputStream一样,OutputStream也是字节流,前边解释过什么是字节流,这里再简单说一下,字节流就是以字节的方式操作流。

举个例子:

Alt

字节编码

上图中上边一行就是字符,字符就是通常我们看到的字母,汉字等各个国家的语言以及符号。下边一行是以UTF-8编码的字节,为了体现UTF-8变长的特点,所以里边的标点符号是英文标点符号。你可能已经注意到了,难道不同的编码还有不同的字节表示?

Read more »

Java基础之IO(1)-InputStream

Posted on 2018-11-05 | In Java学习笔记

概述

之前介绍过一篇IO总览的文章,概述性的讲解了现有的一些Java IO。从这一篇开始,详细讲解Java IO的各个模块,今天首先讲一下InputStream。

InputStream是一个字节输入流,什么是字节流呢?我们知道在java中有一个叫byte的基本类型,就是同一个。字节是一个8位表示的二进制。很多人会误认为输入流就是打开一个磁盘文件然后从里边读数据,但是输入流并不局限于文件,应该说IO并不代表和磁盘交互。所以读取磁盘文件仅仅是输入流中的一种FileInputStream,在输入流中还有很多其他的输入流。接下会介绍几种,虽然有些不常用。在介绍之前先看一下在JDK中,InputStream的继承关系:

Read more »

Java 基础之IO总览

Posted on 2018-05-26 | In Java学习笔记

背景

IO在一般业务开发中不常用到,因此也是很久没有对这部分进行一次系统性的总结,最近有时间也是总结一下。

Java IO总览

Java IO这里指的传统IO,NIO会放到其他文章中介绍。在分类之前先了解一些概念。

流

流是一种对数据传递的抽象概念。比如,我们通过输入流读取磁盘上读取数据,就像水流一样连续源源不断流向用户态内存中。但是本质并非如此,至少不像水流那样源源不断,因为用户开发的程序运行在用户空间,而用户空间的进程是没有直接操作I/O设备的权限,需要内核进程帮忙操作I/O设备,用户空间进程会交出执行权,这个状态叫陷入内核,而用户空间的进程则表现为阻塞状态,等到需要读取的数据被内核进程准备好后,用户空间进程重新获得执行权,继续运行。

字节流

字节流和它的名字一样,是以字节的方式来操作文件的,这里的文件包括图片、视频、文本等,它的使用范围比字符流广泛,并且后面我们会介绍某些字符流如FilerReader也是建立在字节流上操作的,利用StreamDecoder按照编码方式将字节转换成字符,后面会详细介绍。字节流操作的byte。

Read more »

Java NIO入门到放弃系列之Buffer

Posted on 2018-05-25 | In Java学习笔记

Buffer是什么

和它的名字一样,Buffer是一个缓冲区,本质上是一块可以写入数据。可以读取数据的内存。在NIO中,Buffer用于和NIO中的各种channel交互。数据可以从channel中读入Buffer,然后从Buffer中写入另一个channel。

Buffer中几个重要的概念

  • capacity:容量,指定之后不可变动

  • limit:限制,第一个不应该读取或写入数据的索引,初始时和capacity在一个位置。

  • position:位置,下一个可读取或写入的位置,初始为0,不能为负,且不能大于limit

    Read more »
1…34

ikan

34 posts
11 categories
16 tags
© 2020 ikan
Powered by Hexo
|
Theme — NexT.Muse v5.1.4