《Java毕业设计外文翻译.docx》由会员分享,可在线阅读,更多相关《Java毕业设计外文翻译.docx(11页珍藏版)》请在优知文库上搜索。
1、毕业设计(论文)外文文献翻译译文:JavaI/O系统对编程语言的设计者来说,创建,套好的输入输出(I/O)系统,是一项难度极高的任务。这一类可以从解决方案的数母之多上看出端倪。这个问题就难在它要面对的可能性太多了。不仅是因为有那么多的I/O的源和目的(文件,限制台,网络连接等等),而且还有许多方法(依次的,随机的,缓存的,二进制的,字符方式的,行的,字的等等)。Java类库的设计者们用“仓犍许多类”的方法来解决这个问题。坦率地说,JaVal/0系统的类实在太多了,以至于初看起来会把人吓着(但是,具有讽剌意味的是,这种设计事实上是限制了类的爆炸性增长此外,Java在1.0版之后又对其I/O类库进
2、行了重大的修改,原先是面对byle的,现在又补充r面对CniCode字符的类库。为提高性能,完善功能,JDKl.4又加/一个nio(意思是“newI/O。这个名字会用上许多年)。这么以来,假如你想对Java的I/O类库有个全面了解,并且做到运用白如,你就得先学习大量的类。此外,了解I/O类库的演化历史也是相当玳要的。可能你的第反应是“别拿什么历史来烦我了,告知我怎么用就可以了!”但问题是,假如你对这段一窍不通,很快就会被一些有用或是没用的类给搞糊涂了。本文会介绍JaVa标准类库中的各种I/O类,与其运用方法。File类在介绍干腌从流里读写数据的类之前,我们先介绍一下处理文件和书目的类。你会认为
3、这是一个关于文件的类,但它不是。你可以用它来表示某个文件的名字,也可以用它来表示书目里一组文件的名字。假如它表示的是一组文件,那么你还可以用list()方法来进行查询,让它会返回Slring数组。由于元素数量是固定的,因此数组会比容器更好一些。假如你想要获得另一个书1.l的清单,再建一个File对象就是了。书目列表器假设你想看看这个书目。有两个方法。一是不带参数调用list().它返回的是FilO对象所含内容的完整清单。但是,假如你要的是一个限制性列表还是书目,以与删除文件。rena11eTo()这个方法会把文件重命名成(或者说移动到)新的书目,也就是参数所给出的书目。而参数本身就是一个FiI
4、e对象。这个方法也适用于书目。输入与输出I/O类库常运用流(Stream)”这种抽象。所谓流是一种能生成或接受数据的,代表数据的源和目标的对象。流把I/O设备内部的详细操作给隐微起来了。正如JDK文档所示的,Java的I/O类库分成输入和输出两大部分。全部InpulStreain和Reader的派生类都有一个基本的,继承下来的,能读取单个或byte数组的read()方法。同理,全部OutputStream和Writer的派生类都有一个基本的,能写入单个或byte数组的Write()方法。但通常状况下,你是不会去用这些方法的;它们是给其它类用的一一而后者会供应些更好用的接口。因此,你很少会遇到只
5、用一个类就能创建一个流的情形,事实上你得把多个对象桎起来,并以此来获得所需的功能。Java的流类库之所以会那么让人犯旱,最主要的缘由就是你必需为创建一个流而动用多个对象,我们最好还是依据其功能为这些class归个类。JaVa1.0的类库设计者们是从确定“让全部与输入相关的类去继承InPUIStream”入手的。同理,全部与输出相关的类就该继承OutputStream了。添加属性与适用的接口运用分层对象(IayCredobjects)”,为单个对象动态地,透亮地添加功能的做法,被称为DecoralorPatterne(模式是ThinkinginPatterns(withJaVa)的主题。)Dec
6、oraor模式要求全部包覆在原始对象之外的对象,都必需具有与之完全相同的接口。这使得decorator的用法变得特别的透亮一无论对象是否被decorate过,传给它的消息总是相同的。这也是JaVal/0类库要有filter(过滤器)”类的缘由:抽象的filter”类是全部decorator的基类。(decorator必需具有与它要包装的对象的全部接口,但是decorator可以扩展这个接口,由此就衍生出了许多filler类)。Decorator模式常用于如下的情形:假如用继承来解决各种需求的话,类的数量会多到不切实际的地步。Java的I/O类库须要供应许多功能的组合,J:是decorator模
7、式就有了用武之地。但是decorator有个缺点,在提高编程的敏捷性的同时(因为你能很简单地混合和匹配属性),也使代码变得更困难了。Java的1/0类库之所以会这么怪,就是因为它必需为一个1/0对象创建许多类”,也就是为一个核心I/O类加上许多decoratoro为InputStream和OutputStreani定义decorator类接口的类,分别是FiIterInputStream和FilterOutputStreamo这两个名字都起得不怎么样。FiIterInputStream和FilterOutputStream都继承自I/O类库的基类InputStream和OutputStrcan
8、i,这是decorator模式的关键(惟有这样decorator类的接口才能与它要服务的对象的完全相同)。用FilterInPUtStream读取InputStreamFilterInputStream与其派牛类有两项重要任务。DataInputStream可以读取各种PrimitiVe与String,(全部的方法都以read打头,比11readByte(),readFloat()它,以与它的搭档DataOUtPUtStreanb能让你通过流将primitive数据从一个地方导到另一个地方。这些地方”都列在表12-4里。其它的类都是用来修改InPUtSIream的内部行为的:是不是做缓冲,是不
9、是知道它所读取的行信息.(允许你读取行号或设定行号),是不是会弹出单个字符。后两个看上去更像是给编译器用的(也就是说,它们也许是为Java编译器设计的),所以通常状况下,你是不大会用到它们的。不论你用哪种1/0设备,输入的时候,最好都做缓冲.所以对0类库来说,比校明智的做法还是把不缓冲当特例(或者去干脆调用方法),而不是像现在这样把缓冲当作特例。外文原文:JAVA1/0SystemGreatingagoodinput/output(I/O)systemisoneofthemoredifficulttasksforthelanguagedesigner.Thisisevidencedbythen
10、umberofdifferentapproaches.Thechallengeseemstobeincoveringal1eventualities.NotonlyaretheredifferentsourcesandsinksofI/Othatyouwanttocommunicatewith(files,theconsole,networkconnections),butyouneedtotalktotheminawidevarietyofways(sequential,random-access,buffered,binary,character,by1ines,bywords,etc.)
11、.TheJava1ibrarydesignersattackedthisproblembycreatinglotsofclasses.Infact,therearesomanyclassesforJavaSI/Osystemthatitcanbeintimidatingatfirst(ironically,theJavaI/Odesignactuallypreventsanexplosionofclasses).Therewasalsoasignificantchangeinthe1/0libraryafterJava1.0,whentheoriginalbyte-oriented1ibrar
12、ywassupplementedwithchar-oriented,Unicode-basedI/Oclasses.AsaresultthereareafairnumberofclassestolearnbeforeyouunderstandenoughofJava,SI/Opicturethatyoucanuseitproperly.Inaddilion,it,SratherimportanttounderstandtheevolutionhistoryoftheI/Olibrary,evenifyourfirstreactionisdontbothermewithhistory,justs
13、howmehowtouseit!Theproblemisthatwithoutthehistoricalperspectiveyouwillrapidlybecomeconfusedwithsomeoftheclassesandwhenyoushouldandshouldn,tusethem.ThisarticlewillgiveyouanintroductiontothevarietyofI/OclassesinthestandardJava1ibraryandhowtousethem.TheFileclassBeforegettingintotheclassesthatactualIyre
14、adandwritedatatostreams,we11lookautilityprovidedwiththelibrarytoassistyouinhandlingfiledirectoryissues.TheFileclasshasadeceivingname-youmightthinkitreferstoafile,butitdoesn,t.11canrepresenteiIherthenameofaparticularfileorthenamesofasetoffilesinadirectory.Ifit,Sasetoffiles,youcanaskfortheseiwiththe1i
15、st()method,andthisreturnsanarrayofString.Itmakessensetoreturnanarrayratherthanoneoftheflexiblecontainerclassesbecausethenumberofelementsisfixed,andifyouwantadifferentdirectorylistingyoujustcreateadifferentFileobject.Infact,“FilePalhwouldhavebeenabetternamefortheclass.Thissectionshowsanexampleoftheus
16、eofthisclass,includingtheassociatedFilenameFilterinterface.AdirectorylisterSupposeyoudliketoseeadirectorylisting.ThePileobjectcanbe1istedintwoways.Ifyoucalllist()withnoarguments,you,11gettheful1listthattheFiIeobjectcontains.However,ifyouwantarestrictedlist-forexample,ifyouwantallofthefileswithanextensionof.java-thenyouuseadirectoryfi1ter,whichisaclassthattellshowtoselecttheFileobjectsfordis