随笔分类 - IO
IO
摘要:什么是Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道; scatter(分散):指的是从通道中读取数据分散到多个缓冲区Buffer的过程,该过程会将每个缓存区填满,直至通道中无数据
阅读全文
摘要:什么是通道Channel 这个说实话挺难定义的,有点抽象,不过我们可以根据它的用途来理解; 通道主要用于传输数据,从缓冲区的一侧传到另一侧的实体(如文件、套接字...),反之亦然; 通道是访问IO服务的导管,通过通道,我们可以以最小的开销来访问操作系统的I/O服务; 顺便说下,缓冲区是通道内部发送数
阅读全文
摘要:创建缓冲区的方式 主要有以下两种方式创建缓冲区: 1、调用allocate方法 2、调用wrap方法 我们将以charBuffer为例,阐述各个方法的含义; allocate方法创建缓冲区 调用allocate方法实际上会返回new HeapCharBuffer(capacity, capacity
阅读全文
摘要:什么是缓冲区(Buffer) 定义 简单地说就是一块存储区域,哈哈哈,可能太简单了,或者可以换种说法,从代码的角度来讲(可以查看JDK中Buffer、ByteBuffer、DoubleBuffer等的源码),Buffer类内部其实就是一个基本数据类型的数组,以及对这个缓冲数组的各种操作; 常见的缓冲
阅读全文
摘要:如下代码是一个Java小程序,用于往文件写入数据。每次运行该程序,一个新的文件被创建,之前旧的文件被删除;这与往文件追加内容是有区别的。 这个例子使用了FileOutputStream,除了该类你还可以使用FileWriter或者PrintWriter,对于文本操作,通常是足够的; 使用FileWr
阅读全文
摘要:当我们使用Java往文件写入数据的时候,我们有两种方式,使用FileOutputStream或FileWriter。 FileOutputStream: FileWriter: 以上两种方式都可以正常运行,但是它们究竟有何区别呢? 关于以上这两个类,有太多需要讨论,它们都很好的实现了常见操作系统的文
阅读全文
摘要:前言 Channels和Buffers是JAVA NIO里面比较重要的两个概念,NIO正是基于Channels和Buffers进行数据操作,且数据总是从Channels读取到Buffers,或者从Buffers写入到Channels。 通道(Channel) NIO中的通道与IO中的流类似,不过流是
阅读全文
摘要:字节流InputStream/OutputStream 本篇将对JAVA I/O流中的字节流InputStream/OutputStream做个简单的概括: 总得来说,每个字节流类都有一个对应的用途,如下: ByteArrayInputStream/ByteArrayOutputStream //字
阅读全文
摘要:偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异; 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说,每个字符输出流类都有一个对应的用途,如下: 字符输出流基类:Writer 字节流转字符流:Outp
阅读全文
摘要:字符输入流Reader组成结构 本篇将对JAVA I/O流中的字符输入流Reader做个简单的概括: 总得来说,每个字符输入流类都有一个对应的用途,如下: 字符流基类:Reader 字节流转字符流:InputStreamReader //读取字节输入流中的字符 字符文件读取相关:FileReader
阅读全文
