IO / NIO
文章平均质量分 80
苦瓜_Tan
这个作者很懒,什么都没留下…
展开
-
Java NIO使用及原理分析(二)
在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中的Buffer对象。在缓冲区中,最转载 2014-04-23 14:54:54 · 335 阅读 · 0 评论 -
BufferedInputStream,FileInputStream,FileChannel实现文件拷贝
从上篇文章中知道Bufpublic class BufferedOutputStreamDemo { @Test public void test1() throws IOException{ File originFile = new File("D:"+File.separator+"test"+File.separator+"bufferedStream_copy.txt");原创 2014-08-27 10:04:58 · 1461 阅读 · 0 评论 -
BufferedInputStream详解
BufferedInputStream与BufferedOutputStream字节流有自带缓冲转载 2014-08-27 09:53:16 · 3173 阅读 · 0 评论 -
JAVA IO详解
【案例1】创建一个新文件1234567891011import java.io.*;class hello{ public static void main(String[] args) { File f=new File("D:\\hello.txt"); try转载 2014-08-26 09:10:04 · 529 阅读 · 0 评论 -
java nio之Buffer(一)
Buffer是一个包装了基本数据元素数组的对象,它以及它的子类定义了一系列API用于处理数据缓存。一、属性Buffer有四个基本属性:1、capacity 容量,buffer能够容纳的最大元素数目,在Buffer创建时设定并不能更改2、limit buffer中有效位置数目3、position 下一个读或者写的位置4、mark 用于记忆的标志位,配合reset()使转载 2014-04-23 13:51:00 · 403 阅读 · 0 评论 -
NIO组件Selector工作机制详解(上)
转一、 前言 自从J2SE 1.4版本以来,JDK发布了全新的I/O类库,简称NIO,其不但引入了全新的高效的I/O机制,同时,也引入了多路复用的异步模式。NIO的包中主要包含了这样几种抽象数据类型: Buffer:包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。Charset:它提供Unicode字符串影射到字节序列以及逆映射的操转载 2014-08-27 15:14:52 · 2434 阅读 · 1 评论 -
ByteBuffer使用之道
缓冲区分配和包装 在能够读和写之前,必须有一个缓冲区,用静态方法 allocate() 来分配缓冲区: ByteBuffer buffer = ByteBuffer.allocate(1024); allocate() 方法分配一个具有指定大小的底层数组,并将它包装到一个缓冲区对象中 — 在本例中是一个 ByteBuffer。 还可以将一个现有的数组转换为缓冲区:转载 2014-08-27 17:49:09 · 676 阅读 · 0 评论 -
传统IO与NIO的比较
本文并非Java.io或Java.nio的使用手册,也不是如何使用Java.io与Java.nio的技术文档。这里只是尝试比较这两个包,用最简单的方式突出它们的区别和各自的特性。Java.nio提出了新的流(stream)通讯概念并且加入了新的缓冲、文件流以及socket(套接字)特性。java.io 概览这个包通过数据流和序列化机制来实现系统输入和输出。并且支持多种类型的数据流,转载 2014-08-27 12:36:59 · 1613 阅读 · 0 评论 -
NIO组件Selector工作机制详解(下)
转自:http://blog.csdn.net/haoel/article/details/2224069五、 迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/O要设计成这个样子?如果说老的I/O不能多路复用,如下图所示,要开N多的线程去挨个侦听每一个Channel (文件描述符) ,如果这样做很费资源,且效率不高的话。那为什么在新的I/O机制转载 2014-08-27 15:16:23 · 573 阅读 · 0 评论 -
Java NIO使用及原理分析 (一)
在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。在NIO中有几个核心对象需要掌握:缓冲区(Buf转载 2014-04-23 14:35:37 · 316 阅读 · 0 评论 -
Java NIO使用及原理分析 (四)
在上一篇文章中介绍了关于缓冲区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就转载 2014-04-23 15:34:21 · 318 阅读 · 0 评论 -
Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。缓冲区的分配在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组,并把它包转载 2014-04-23 15:08:27 · 282 阅读 · 0 评论 -
NIO组件Selector详解
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selector的创建向Selector注册通道SelectionKey通过Selector选择通道wakeUp()close()完整转载 2014-08-27 16:12:35 · 746 阅读 · 0 评论 -
NIO组件Selector调用实例
*对于nio的非阻塞I/O操作,使用Selector获取哪些I/O准备就绪,注册的SelectionKey集合记录关联的Channel这些信息.SelectionKey记录Channel对buffer的操作方式.---SelectableChannel,Selector,SelectionKey是nio中Channel操作的3个主要部件.---对应关系,一个Selectab转载 2014-08-27 16:13:18 · 356 阅读 · 0 评论 -
JAVA IO 详解2
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStre转载 2014-08-26 21:01:00 · 316 阅读 · 0 评论