Java IO 系统外文翻译
《Java IO 系统外文翻译》由会员分享,可在线阅读,更多相关《Java IO 系统外文翻译(7页珍藏版)》请在毕设资料网上搜索。
1、1 本科毕业设计 (论文 )外文翻译 译文: Java I/O 系统 对编程语言的设计者来说,创建一套好的输入输出 (I/O)系统,是一项难度极高的任务。这一点可以从解决方案的数量之多上看出端倪。这个问题难就难在它要面对的可能性太多了。不仅是因为有那么多 I/O 的源和目地 (文件,控制台,网络连接等等 ),而且还有很多方法 (顺序的 sequential,随机的 random-access,缓存的 buffered,二进制的 binary,字符方式的 character,行的 by lines,字的 by words,等等 )。 Java 类库的设计者们用 创建很多类 的办法来解决这个问题。
2、坦率地说 Java I/O 系统的类实在是太多了,以至于初看起来会把人吓着(但是,具有讽刺意味的是,这种设计实际上是限制了类的爆炸性增长)。此外, Java 在 1.0 版之后又对其 I/O 类库作了重大的修改,原先是面向 byte 的,现在又补充了面向 Unicode字符的类库。为了提高性能,完善功能, JDK 1.4 又加了一个 nio(意思是 new I/O。这个名字会用上很多年 )。这么以来,如果你想对 Java 的 I/O 类库有个全面了解,并且做到运用自 如,你就得先学习大量的类。此外,了解 I/O 类库的演化的历史也是相当重要的。可能你的第一反应是 别拿什么历史来烦我了,告诉我怎
3、么用就可以了! 但问题是,如果你对这段历史一无所知,很快就会被一些有用或是没用的类给搞糊涂了。 本章会介绍 Java 标准类库中的各种 I/O 类,及其使用方法。 在介绍直接从流里读写数据的类之前,我们先介绍一下处理文件和目录的类。 File 类有一个极具欺骗性的名字;或许你会认为这是一个关于文件的类,但它不是。你可以用它来表示某个文件的名字,也可以用它来表示目录里一组文件的名字。如果它表示的是 一组文件,那么你还可以用 list( )方法来进行查询,让它会返回 String 数组。由于元素数量是固定的,因此数组会比容器更好一些。如果你想要获取另一个目录的清单,再建一个 File 对象就是了。
4、实际上,叫它 FilePath可能会更好一些。下面我们举例说明怎样使用这个类及其相关的 FilenameFilter 接口。 假设你想看看这个目录。有两个办法。一是不带参数调用 list( )。它返回的是 File 对象所含内容的完整清单。但是,如果你要的是一个 限制性列表 (restricted list)的话 比方说 ,你想看看所有扩展名为 .java 的文件 那么你就得使用 目录过滤器 了。这是一个专门负责挑选显示 File 对象的内容的类。 也就是说,这类对象的任务就是提供一个 accept( )的方法。之所以要创建这个类,就是要给 list( )提供一个 accept( )方法,这样
5、当 list( )判断该返回哪些文件名的时候,能够 回过头来调用 accept( )方法。因此,这种结构通 常被称为 回调 (callback)。更准确地说,由于 list( )实现了基本功能,而本科毕业设计(论文)外文翻译 2 FilenameFilter 提供了 对外服务所需的算法 ,因此这是一种 策略模式 (Strategy Pattern)。由于 list( )拿 FilenameFilter 对象当参数,因此你可以将任何实现 FilenameFilter接口的对象传给它,并以此 (甚至是在运行时 )控制 list( )的工作方式。回调能提高程序的灵活性。 DirFilter 还告诉我
6、们, interface 只是包含了一些方法,它没说你只能写这些方法。 (但是,你至少要定义接口里有的方法。 ) 这里我们还定义了 DirFilter 的构造函数。 accept( )方法需要两个参数,一个是 File 对象,表示这 个文件是在哪个目录里面的;另一个是 String,表示文件名。虽然你可以忽略它们中的一个,甚至两个都不管,但是你大概总得用一下文件名吧。记住, list( )会对目录里的每个文件调用accept( ),并以此判断是不是把它包括到返回值里;这个判断依据就是 accept( )的返回值。 切记,文件名里不能有路径信息。为此你只要用一个 String 对象来创建 Fil
7、e 对象,然后再调用这个 File 对象的 getName( )就可以了。它会帮你剥离路径信息(以一种平台无关的方式)。然后再在 accept( )里面用正则表达式 (regular expression)的 matcher 对象判断, regex 是否与文件名相匹配。兜完这个圈子, list( )方法返回了一个数组。 这是用匿名内部类 (详见第八章 )来重写程序的绝佳机会。下面我们先创建一个返回 FilenameFilter 的 filter( )方法。 注意, filter( )的参数必须是 final 的。要想在匿名内部类里使用其作用域之外的对象,只能这么做。 这是对前面所讲的代码的改进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中设计图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java io 系统 外文 翻译
