I/O NIO 2

java IO通过java.io包下的类和接口支持,主要包括输入,输出两种流,每种输入输出又可以分为字节流和字符流

java的IO流使用装饰器设计模式,将IO流分成底层节点流和上层处理流,其中底层节点流用于和底层的物理存储节点直接关联,不同的物理节点可能有差异,程序9把不同物理节点流包装成同一的处理流,运行程序统一输入输出  

java7后对java.nio及其子包提供了升级,称为NIO2

File类:

  File类可以使用文件路径字符串来创建File实例,该路径可以是绝对路径,也可以是相对路径。默认情况相对路径由系统属性“user.dir”指定,通常是java虚拟机所在路径

  File对象常用方法:

  访问文件:

    String getName():返回File对象表示的文件名或路径名,如果是路径,则返回最后一级子路径名

    String getPath():返回File对象所对应的路径名

    File getAbsoulteFile():返回绝对路径

    String getAbsoultePath():返回绝对路径名

    String getParent():返回对应目录(最后一级子目录)的父目录名

    boolean renameTo(File newName):重命名File对象所对应的文件或目录,如果重命名成功,返回true

  文件检测:

    boolean exists():判断File对象所对应的文件名或目录是否存在

    boolean canWrite():所对应的文件和目录是否可写

    boolean canRead():所对应的文件和目录是否可读

    boolean isFile():所对应的是否是文件,而不是目录

    boolean isDirectory():是否是目录,而不是文件

    boolean isAbsoulte():所对应的文件或目录是否是绝对路径

  获取常规文件信息:

    long lastModified():返回文件的最后修改时间

    long length():返回文件内容长度

  文件操作:

    boolean createNewFile():当File对象所对应的文件不存在时,新建一个该File对象所指定的新文件,成功返回true

    boolean delete():删除File对象对应的文件或路径

    static File createTempFile(String prefix, String suffix):在默认的临时目录中创建一个临时的空文件,使用给定前缀,系统生成的随机数和给定后缀作为文件名。这是静态方法

    static File createTempFile(String prefix, String suffix, File directory):在directory指定目录中新建一个临时的空文件,使用给定前缀,系统生成的随机数和给定后缀作为文件名。这是静态方法

    void deleteOnExit():注册一个删除钩子,指定当java虚拟机退出时,删除File对象所对应的文件和目录

  目录操作:

    boolean mkdir():试图创建一个File对象所对应的目录,如果成功,返回true。调用该方法的File对象必须是一个路径,而不是一个文件

    String[] list():列出File对象的所有子文件名和路径名

    File[] listFiles():列出File对象的所有子文件和路径

    static File[] listRoots():列出系统所有根路径,这是静态方法

  list方法可以接受一个FilenameFilter文件过滤器,可以使用Lambda表示

时间: 2024-11-29 11:01:20

I/O NIO 2的相关文章

下载-深入浅出Netty源码剖析、Netty实战高性能分布式RPC、NIO+Netty5各种RPC架构实战演练三部曲视频教程

下载-深入浅出Netty源码剖析.Netty实战高性能分布式RPC.NIO+Netty5各种RPC架构实战演练三部曲视频教程 第一部分:入浅出Netty源码剖析 第二部分:Netty实战高性能分布式RPC 第三部分:NIO+Netty5各种RPC架构实战演练

Java NIO (五) 管道 (Pipe)

Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 如下图: 向管道写数据: 从管道读数据: 1. 从读取管道的数据,需要访问source通道. 2. 调用source通道的read()方法来读取数据

Java NIO实现非阻塞式socket通信

博主知识水平有限,只能提供一个个人的狭隘的理解,如果有新人读到这儿,建议看一下其他教程或者API,如果不明白,再来看一下:如果有dalao读到这儿,希望能指出理解中的问题~谢谢 Java提供了用于网络通信的socket和serversocket包,然而实现方式是阻塞式的,同一时间点上只能进行一个连接,这会带来不好的体验.当然了,我们也可以通过不断创建线程的方式管理连接,但线程多了的话反而会降低效率.于是Java推出了非阻塞式IO--channel.并且channel提供关于网络通信的相关chan

Java NIO中的缓冲区Buffer(一)缓冲区基础

什么是缓冲区(Buffer) 定义 简单地说就是一块存储区域,哈哈哈,可能太简单了,或者可以换种说法,从代码的角度来讲(可以查看JDK中Buffer.ByteBuffer.DoubleBuffer等的源码),Buffer类内部其实就是一个基本数据类型的数组,以及对这个缓冲数组的各种操作: 常见的缓冲区如ByteBuffer.IntBuffer.DoubleBuffer...内部对应的数组依次是byte.int.double... 与通道的关系 在Java NIO中,缓冲区主要是跟通道(Chann

基于NIO的消息路由的实现(四) 服务端通讯主线程(2)断包和粘包的处理

本来我打算单独开一章,专门说明粘包和断包,但是觉得这个事儿我在做的时候挺头疼的,但是对于别人或许不那么重要,于是就在这里写吧. 那么何谓粘包.何谓断包呢? 粘包:我们知道客户端在写入报文给服务端的时候,首先要将需要写入的内容写入Buffer,以ByteBuffer为例,如果你Buffer定义的足够大,并且你发送的报文足够快,此时就会产生粘包现象,举例来说 你发送一个 报文" M|A",然后你有发送了一个"M|B",如果产生粘包,服务端从缓冲区里面读出的就是"

Java NIO通信框架在电信领域的实践

Java NIO通信框架在电信领域的实践 此文配图有错,华为电信软件V1版逻辑架构图与华为电信软件V2 MVC版逻辑架构图两张配图是同一张啊 另:我觉得作者在本文中遇到由于同步io引起的历史遗留问题更多的是架构的问题,在作架构时就需要考虑到同步io引起的阻塞问题,我觉得比较好的解决方案是使用排队的方式来下发请求,而不是每次下发请求都启一个线程,这样如果对方还是响应慢的话即使是用nio也是解决不了问题的.

关于BIO和NIO的理解

最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO.下面是我结合网络资料自己总结的,为了节约时间图示随便画的,能达意就行. 简介: BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善. NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮

java nio

NIO 是java nonblocking(非阻塞) IO 的简称,在jdk1.4 里提供的新api .Sun 官方标榜的特性如下: 为所有的原始类型提供(Buffer)缓存支持.字符集编码解码解决方案. Channel :一个新的原始I/O 抽象. 支持锁和内存映射文件的文件访问接口. 提供多路(non-bloking) 非阻塞式的高伸缩性网络I/O . Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,之前,在打开

tomcat 、NIO、netty 本质

tomcat 基于 web 浏览器的通信容器 nio 同步非阻塞的I/O模型 netty 通信框架,对 nio 的封装

Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

转载请注明出处:http://blog.csdn.net/anxpp/article/details/51512200,谢谢! 本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为注释,嵌入到代码中,看代码时就能更容易理解,代码中会用到一个计算结果的工具类,见文章代码部分. 相关的基础知识文章推荐: Linux 网络 I/O 模型简介(图文) Jav