欢迎来到毕设资料网! | 帮助中心 毕设资料交流与分享平台
毕设资料网
全部分类
  • 毕业设计>
  • 毕业论文>
  • 外文翻译>
  • 课程设计>
  • 实习报告>
  • 相关资料>
  • ImageVerifierCode 换一换
    首页 毕设资料网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    Java IO 系统外文翻译

    • 资源ID:130206       资源大小:57KB        全文页数:7页
    • 资源格式: DOC        下载积分:100金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    下载资源需要100金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

    Java IO 系统外文翻译

    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 的。要想在匿名内部类里使用其作用域之外的对象,只能这么做。 这是对前面所讲的代码的改进

    8、,现在 FilenameFilter 类已经与 DirList2 紧紧地绑在一起了。不过你还可以更进一步,把这个匿名 内部类定义成 list( )的参数,这样代码会变得更紧凑: 现在该轮到 main( )的参数成 final 了,因为匿名内部类要用它的 arg0了。 这个例子告诉我们,可以用匿名内部类来创建专门供特定问题用的,一次性的类。这种做法的好处是,它能把解决某个问题的代码全都集中到一个地方。但是从另一角度来说,这样做会使代码的可读性变差,所以要慎重。 File 类的功能不仅限于显示文件或目录。它还能帮你创建新的目录甚至是目录路径 (directory path),如果目录不存在的话。此

    9、外它还能用来检查文件的属性 (大小,上次修 改的日期,读写权限等 ),判断 File对象表示的是文件还是目录,以及删除文件。下面这段程序演示了 File 类的一些其他方法 (请查阅 JDK 文档,以了解其全部功能 ): fileData( )演示了全套查询文件和目录路径信息的方法。 main( )的第一条指令就是执行 renameTo( )。它会把文件重命名成(或者说移动到 )新的目录,也就是参数所给出的目录。而参数本身就是一个 File 对象。这个方法也适用于目录。 如果你试过上面那段程序,就会发现,你能用它创建任意复杂的目录路径,因为 mkdirs( )已经帮你打理好了。 I/O 类库常使

    10、用 流 (stream)这种抽象。所谓 流 是一种能生成或接受数据的,代表数据的源和目标的对象。流把 I/O 设备内部的具体操作给隐藏起来了。 正如 JDK文档所显示的, Java 的 I/O 类库分成输入和输出两大部分。所有 InputStream 和 Reader的派生类都有一个基本的,继承下来的,能读取单个或 byte 数组的 read( )方法。同理,本科毕业设计(论文)外文翻译 3 所有 OutputStream 和 Writer 的派生类都有一个基本的,能写入单个或 byte 数组的 write( )方法。但通常情况下,你是不会去用这些方法的;它们是 给其它类用的 而后者会提供一些

    11、更实用的接口。因此,你很少会碰到只用一个类就能创建一个流的情形,实际上你得把多个对象叠起来,并以此来获取所需的功能。 Java 的流类库之所以会那么让人犯晕,最主要的原因就是 你必须为创建一个流而动用多个对象 。 我们最好还是根据其功能为这些 class 归个类。 Java 1.0 的类库设计者们是从决定 让所有与输入相关的类去继承 InputStream入手的。同理,所有与输出相关的类就该继承OutputStream 了。使用 分层对象 (layered objects),为单个对象 动态地,透明地添加功能的做法,被称为 Decorator Pattern。 (模式 61是 Thinking

    12、 in Patterns (with Java)的主题。 )Decorator 模式要求所有包覆在原始对象之外的对象,都必须具有与之完全相同的接口。这使得 decorator 的用法变得非常的透明 -无论对象是否被 decorate过,传给它的消息总是相同的。这也是 Java I/O 类库要有 filter(过滤器 )类的原因:抽象的 filter类是所有 decorator 的基类。 (decorator 必须具有与它要包装的对象的全部接口,但是 decorator 可以扩展这个接口,由此就衍生出了很多filter类 )。 Decorator 模式常用于如下的情形:如果用继承来解决各种需求的

    13、话,类的数量会多到不切实际的地步。 Java 的 I/O 类库需要提供很多功能的组合,于是decorator 模式就有了用武之地。 62 但是 decorator 有个缺点,在提高编程的灵 活性的同时 (因为你能很容易地混合和匹配属性 ),也使代码变得更复杂了。 Java 的 I/O类库之所以会这么怪,就是因为它 必须为一个 I/O 对象创建很多类 ,也就是为一个 核心 I/O 类加上很多 decorator。为 InputStream 和 OutputStream 定义 decorator 类接口的类,分别是 FilterInputStream 和 FilterOutputStream。这两

    14、个名字都起得不怎么样。FilterInputStream 和 FilterOutputStream 都继承自 I/O 类库的基类 InputStream 和 OutputStream,这是 decorator 模式的关键 (惟有这样 decorator 类的接口才能与它要服务的对象的完全相同 )。 FilterInputStream 及其派生类有两项重要任务。 DataInputStream 可以读取各种 primitive 及 String。 (所有的方法都以 read打头,比如 readByte( ), readFloat( )。它,以及它的搭档 DataOutputStream,能让你通过流将 primitive 数据从一个地方导到另一个地方。其它的类都是用来修改 InputStream 的内部行为的:是不是做缓冲,是不是知道它所读取的行信息 (允许你读取行号或 设定行号 ),是不是会弹出单个字符。后两个看上去更像是给编译器用的 (也就是说,它 们大概是为 Java 编译器设计的 ),所以通常情况下,你是不大会用到它们的。 不论你用哪种 I/O 设备,输入的时候,最好都做缓冲。所以对 I/O 类库来说,比较明智的做法还是把不缓冲当特例(或者去直接调用方法 ),而不是像现在这样把缓冲当作特例。


    注意事项

    本文(Java IO 系统外文翻译)为本站会员(泛舟)主动上传,毕设资料网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请联系网站客服QQ:540560583,我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们
    本站所有资料均属于原创者所有,仅提供参考和学习交流之用,请勿用做其他用途,转载必究!如有侵犯您的权利请联系本站,一经查实我们会立即删除相关内容!
    copyright@ 2008-2025 毕设资料网所有
    联系QQ:540560583