金色坐标

关注互联网应用和搜索引擎技术

« 2010年到了GOOGLE和苹果的手机鏖战 »

各个版本JDK在IO上的更新内容一览表

IO(Input/Output)是计算机输出/输出的接口。Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。此外,Java也对块传输提供支持。

由于JDK的发展过程是一个逐步完善和升级的过程,因此不同版本的JDK对IO的支持也是不同的,从最初的简单IO支持到现在的多种资源类型支持,各个版本JDK在IO上的主要更新内容如下表所示:

 

 

JDK版本 增加的内容 对应的APIs
1.0.2
  • io的基本支持
  • BufferedInputStream, BufferedOutputStream 带缓存的I/O
  • ByteArrayInputStream ByteArrayOutputStream 面向字节数组的I/O
  • DataInputStream,DataOutputStream 面向数据(值与对象)的I/O
  • File,FileDescriptor,FileInputStream,FileOutputStream 文件相关
  • FilterInputStream,PushbackInputStream, FilterOutputStream 带过滤功能的I/O
  • InputStream,LineNumberInputStream,PipedInputStream 常见输入流(InputStream是抽象超类)
  • OutputStream, PipedOutputStream, PrintStream 常见输出流(OutputStream是抽象超类)
  • RandomAccessFile 随机读写文件(可以自由地seek)
  • SequenceInputStream 把多个输入流串起来当一个输入流看待
  • StreamTokenizer 依赖分隔符将字符分隔成token方便读取的输入流
  • StringBufferInputStream 此输入流的结果是得到一个String。
1.1
  • 增加了字符流的支持
  • 更好地支持流的国际化
  • Reader 字符输入流的抽象类
  1. BufferedReader 带缓存的字符输入流,并可逐行读取,对以的字节流类为: BufferedInputStream
  2. LineNumberReader 记录行号的字符输入流, 对以的字节流类为: LineNumberInputStream
  3. CharArrayReader 数组字符输入流,对以的字节流类为: ByteArrayInputStream
  4. InputStreamReader 将普通字节输入流封装成字符输入流的类
  5. FileReader 以字符流的方式读取文件, 对以的字节流类为: FileInputStream
  6. FilterReader 提供过滤功能的字符输入流的抽象类,对以的字节流类为: FilterInputStream
  7. PushbackReader FilterReader的之类,能提供追加字符的功能,对以的字节流类为: PushbackInputStream
  8. PipedReader 从PipedWriter中输出结果中读取信息的字符输入流, 对以的字节流类为:PipedInputStream
  9. StringReader 此字符输入流的结果是得到一个String,对以的字节流类为: StringBufferInputStream
  • Writer 字符输入流的抽象类
  1. BufferedWriter 带缓存的字符输出流,并可逐行读取,对以的字节流类为: BufferedOutputStream
  2. CharArrayWriter 数组字符输出流,对以的字节流类为: ByteArrayOutputStream
  3. FilterWriter 提供过滤功能的字符输出流的抽象类,对以的字节流类为: FilterOutputStream
  4. OutputStreamWriter 将普通字节输出流封装成字符输出流的类
  5. FileWriter 以字符流的方式写文件, 对以的字节流类为: FileOutputStream
  6. PrintWriter 将值或对象打印到给定的输出流的类, 对以的字节流类为: PrintStream
  7. PipedWriter 向PipedReader输出信息的字符输出流, 对以的字节流类为: PipedOutputStream
  8. StringWriter 将信息输出到一个缓存串的字符输出流。
1.2
  • 增强了对非unix系统的支持,
  • 添加了便利的文件创建删除和属性访问操作
  • 文件创建删除
  1. File.createNewFile 创建文件
  2. File.createTempFile 创建临时文件
  3. File.deleteOnExit JVM退出时候删除文件
  • 信息访问
  1. File.listRoots获得文件系统的根路径列表
  2. File.isHidden是否隐藏文件,File.setLastModified设置最后修改时间戳,File.setReadOnly设置为只读
  3. File.getParentFile获得上层文件, File.getAbsoluteFile获得绝对路径, File.getCanonicalFile获得相对路径, File.listFiles列出目录下所有文件
  4. 新添接口FileFilter
1.4
  • java.nio的引入
  • 原io包相关类对nio中channel的获取
  • 原来reader和writer的子类构造函数增加支持charset的设置
  • nio包
  1. java.nio 定义了buffer和内存块的操作。可以创建操作系统层面的direct buffer, 能提高在系统资源交换上的性能.
  2. java.nio.channels 定义了 channel这样一个实现I/O操作的抽象类型; 定义了用来做多路传输以及非堵塞I/O的selectors
  3. java.nio.channels.spi 提供channel的各种实现
  4. java.nio.charset 定了用作字符编码的编码器和解码器,用于byte和Unicode之间的转换。
  5. java.nio.charset.spi 定义了charset的实现。
  • getChannel操作
  1. FileInputStream.getChannel, FileOutputStream.getChannel
  2. InputStreamReader.getChannel, OutputStreamWriter.getChannel
  3. RandomAccessFile.getChannel
1.5/5.0
  • Socket上增加了对SSL的支持
  • javax.net.ssl.SSLEngine 提供SSL/TLS层的功能封装
1.6/6.0
  • io包上增加了对控制台编程、磁盘空间查询以及读/写/执行权限的支持
  • nio包上:
  1. linux平台上增加对kernel 2.6的 epoll的支持,提高了网络层selector的效率
  2. 增加系统级文件锁定的功能
  • Console 一个基于字符的控制台设备
  1. System.console() 获得JVM唯一的控制台设备,在javaw运行时返回null
  2. Console.printf(String format, Object... args) 类似与c风格的打印功能
  3. Console.readLine()读入一行用户在控制台上的输入
  4. Console.readPassword从控制台读取密码(密码不回显)
  • File新增加的方法
  1. getTotalSpace() 本分区总空间
  2. getFreeSpace() 本分区空闲空间
  3. getUsableSpace() 本分区不可使用的空间
  4. setWritable, setWritable,setReadable,setExecutable 设置文件的读/写/执行权限
  • IOException 添加了两个新的构造函数: IOException(String, Throwable)和 IOException(Throwable)
  • nio包epoll的支持,文件全局锁定的支持,均相对透明
7.0
  • File相关类增加了很多根据便利的操作,nio.channels API支持File I/O操作
  • NIO.2提供了多播和异步I/O的功能
  • 5个新接口和6个新的类支持多播和异步I/O
  1. AsynchronousByteChannel -读写字节的异步的channel接口.
  2. AsynchronousChannel - 支持异步操作的channel接口.
  3. CompletionHandler - 一个handler接口(类似与windows c的回调函数句柄),用来处理异步I/O的结果数据.
  4. MulticastChannel - 一个支持IP多播的channel接口.
  5. NetworkChannel -一个网络socket的channel接口.
  6. AsynchronousChannelGroup - 一个为了资源共享而建立的异步channel group
  7. AsynchronousDatagramChannel - 面向数据报文的异步socket channel
  8. AsynchronousFileChannel - 读写、管理文件的异步file channel
  9. AsynchronousServerSocketChannel - 面向流的server端监听异步的socket channel
  10. AsynchronousSocketChannel - 面向流的socket连接异步的channel
  11. MembershipKey - 一个描述IP多播成员关系的令牌
  • java.nio.file提供诸多便利管理文件的类(以下仅仅给出个别方法)
  1. Path.copyTo, moveTo复制移动文件
  2. Path.register(WatchService watcher, WatchEvent.Kind<?>... events) 监视文件的修改事件
  3. PathMatcher.matches使用glob syntax对文件进行匹配

    PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.{java,class}");

    Path filename = ...;
    if (matcher.matches(filename)) {
     System.out.println(filename);
    }

 


 


  


  


 




原创文章,如转载请注明:转载自金色坐标 [ http://www.kingxy.com/ ]

本文链接地址:http://www.kingxy.com/archives/193.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过bloglines订阅本站
  • 通过抓虾订阅本站
  • 通过yahoo订阅本站

Search

Google

最新评论及回复

最近发表

金色坐标博客——京ICP备09009094号

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
KingXY Blog - This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.