DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > MySQL > 常见问题

为基于流的I/O使用NIO

20.4.2 为基于流的I/O使用NIO

从JDK 7开始,可以使用NIO打开I/O流。如果拥有Path对象,那么可以通过调用newInputStream()或newOutputStream()方法来打开文件,它们是由File类定义的静态方法。这些方法返回链接到指定文件的流。对于这两种情况,可以使用在第19章中描述的方法来操作流,并且应用相同的技术。使用Path对象打开文件的优点是:NIO定义的所有属性都可以使用。

为了针对基于流的输入操作打开文件,可以使用Files.newInputStream()方法,该方法的一般形式如下所示:

  1. static InputStream newInputStream(Path path, OpenOption ... how)   
  2. throws IOException 

其中,path指定了要打开的文件,how指定了打开文件的方式,how参数的值必须是一个或多个由StandardOpenOption定义的值,在前面描述了这些值(当然,只能应用与输入流相关的选项)。如果没有指定选项,那么文件的打开方式为StandardOpenOption.READ。

一旦打开文件,就可以使用InputStream定义的任何方法。例如,可以使用read()方法从文件读取字节。

下面的程序演示了基于NIO的流I/O的使用。该程序对第13章中的ShowFile程序进行了重写,从而使用NIO特性打开文件并获取流。可以看出,除了使用Path对象和newInputStream()方法外,该版本与原始版本很类似。

 
 
因为newInputStream()方法返回的流是常规流,所以可以像所有其他流那样使用。例如,为了提供缓存,可以在缓存流(如BufferedInputStream)中封装流,如下所示: 
			
  1. new BufferedInputStream(Files.newInputStream(Paths.get(args[0])))  

现在,读取的所有数据都会被自动缓存。

为了针对输出操作打开文件,可以使用Files.newOutputStream()方法。该方法如下所示:

			
  1. static OutputStream newOutputStream(Path path, OpenOption ... how)   
  2. throws IOException 

其中,path指定了要打开的文件,how指定了打开文件的方式,how参数的值必须是StandardOpenOption定义的一个或多个值,在前面描述了这些值(当然,只能应用那些与输出流相关的选项)。如果没有指定选项,那么使用StandardOpenOption.WRITE、StandardOpenOption.CREATE和StandardOpenOption.TRUNCATE_EXISTING打开文件。

使用newOutputStream()方法的方式与前面显示的使用newInputStream()方法的方式类似。一旦打开文件,就可以使用OutputStream定义的任何方法了。例如,可以使用write()方法将字节写入到文件中。为了缓存流,还可以在BufferedOutputSteam对象中封装流。

下面的程序显示了newOutputStream()方法的使用。该程序将字母表写入到test.txt文件中。注意缓存I/O的使用。

 
 

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号