
Java IO与NIO
文章平均质量分 90
已改行
溜了溜了
展开
-
Java PrintWriter和BufferedWriter的区别
BufferedWriter:将文本写入字符输出流,缓冲各个字符从而提供单个字符,数组和字符串的高效写入。通过write()方法可以将获取到的字符输出,然后通过newLine()进行换行操作。BufferedWriter中的字符流必须通过调用flush方法才能将其刷出去。并且BufferedWriter只能对字符流进行操作。如果要对字节流操作,则使用BufferedInputStream。...原创 2018-07-09 11:40:43 · 7463 阅读 · 0 评论 -
Java NIO理解(三)Buffer
缓冲区分类 NIO中的buffer用于和通道交互,数据是从通道读入缓冲区,从缓冲区中写入通道的。Buffer就像一个数组,可以保存多个类型相同的数据。每种基本数据类型都有对应的Buffer类:缓冲区的属性1、capacity(容量):buffer本质是一个数组,在初始化时有固定的大小,这个值就是容量。容量不可改变,一旦缓冲区满了,需要将其清空才能将继续进行读写操作。2、position(...原创 2018-07-07 14:34:41 · 206 阅读 · 0 评论 -
Java NIO理解(二)Channel
Channel就是一个通道,用于传输数据,两端分别是缓冲区和实体(文件或者套接字),通道的特点(也是NIO的特点):通道中的数据总是要先读到一个缓冲区,或者总是要从一个缓冲区中读入。Channel的分类1) FileChannel:从文件中读写数据2) SocketChannel:通过TCP协议读写网络中的数据3) ServerSocketChannel:在服务器...原创 2018-07-07 14:27:13 · 366 阅读 · 0 评论 -
Java NIO理解(一)概述
讲NIO之前,我们先来看一下IO。Java IO即Java 输入输出系统。不管我们编写何种应用,都难免和各种输package java.nio.channels; public interface Channel{ public boolean isOpen(); public void close() throws IOException; }正如在上述通道接口中看到的,所有通道中有常见的两个操作:检查通道是否关闭(isOpen)关闭通道(close...原创 2018-07-06 20:45:04 · 296 阅读 · 0 评论 -
Java I/O理解(六)对象的序列化和反序列化
序列化对象序列化的目标是将对象保存到磁盘中,或者允许在网络中直接传输对象。对象序列化机制允许把内存中的JAVA对象转换成跟平台无关的二进制流,从而允许将这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点,其他程序一旦获得了这种二进制流,都可以讲二进制流恢复成原来的JAVA对象。序列化为何存在我们知道当虚拟机停止运行之后,内存中的对象就会消失;另外一种情况就是JAVA对...原创 2018-07-04 14:57:26 · 340 阅读 · 0 评论 -
Java I/O理解(五)字符流的使用
字符流为何存在既然字节流提供了能够处理任何类型的输入/输出操作的功能,那为什么还要存在字符流呢?容我慢慢道来,字节流不能直接操作Unicode字符,因为一个字符有两个字节,字节流一次只能操作一个字节。如果JAVA不能直接操作字符,我会感到JAVA对这个世界满满的恶意,所以提供对直接的字符输入/输出的支持是很有必要的,因为我们的口号是:一次编写,到处运行。字符流的概念输出字符流:把要写入文件的...原创 2018-07-04 14:53:27 · 728 阅读 · 1 评论 -
Java I/O理解(四)字节流的使用
流的概念 JAVA程序通过流来完成输入/输出。流是生产或消费信息的抽象,流通过JAVA的输入输出与物理设备链接,尽管与它们链接的物理设备不尽相同,所有流的行为具有相同的方式。这样就意味一个输入流能够抽象多种不同类型的输入:从磁盘文件、从键盘或从网络套接字;同样,一个输出流可以输出到控制台、磁盘文件或相连的网络。  在我们平时接触的输入/输出流中,有这样一个概念必须要弄明白,何谓...原创 2018-07-04 14:51:34 · 242 阅读 · 0 评论 -
Java I/O理解(三)RandomAccessFile的使用
一、简述 这个是JDK上的截图,我们可以看到它的父类是Object,没有继承字节流、字符流家族中任何一个类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。二、存在的意义1、是JAVA I/O流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容。2、由于可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,R...原创 2018-07-04 14:44:56 · 239 阅读 · 0 评论 -
Java I/O理解(二)File类的使用
I/O简介 I/O问题可以说是当今web应用中所面临的的主要问题之一,大部分的web应用系统的瓶颈都是I/O瓶颈。这个系列主要介绍JAVA的I/O类库基本架构、磁盘I/O工作机制、网络I/O工作机制以及NIO的工作方式。 从1.4版本开始JAVA引入了NIO,用来提升I/O性能。I/O操作类在包java.io下,大概有将近80个类,这些类可以分为如下四组: 基于字节操作的I/O接口:In...原创 2018-07-04 14:41:17 · 312 阅读 · 0 评论 -
Java I/O理解(一)编码问题
在Java中如何进行文件的读写十分重要,Java IO流是必备的知识点。在学习Java IO流之前必须了解关于编码的那些事。 看代码:public class EncodeDemo { public static void main(String[] args) throws Exception{ String s = "我爱Code"; //...原创 2018-07-03 23:51:23 · 265 阅读 · 0 评论 -
Java BIO、NIO、AIO应用场景
在此之前,先弄清几个概念:1.同步:使用同步IO时,Java自己处理IO读写。2.异步:使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,完成后OS通知Java处理(回调)。3.阻塞:使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。4.非阻塞:使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读...原创 2018-07-10 22:05:44 · 3646 阅读 · 0 评论 -
Java NIO理解(四)Selector
前面介绍过Channel、Buffer,后面的文章主要讲解Selector的实践以及实现原理,选择器的概念比起通道、缓冲区要复杂一些,并且选择器是NIO中最重要的一部分内容。为什么使用Selector Selector又称为“选择器”,单个线程通过Selector可以管理多个SelectableChannel,实际应用中管理多个请求连接。对于操作系统来说,线程之间上下文切换的开销很大,而...原创 2018-07-07 14:37:27 · 209 阅读 · 0 评论