Java毕业设计外文翻译文档格式.doc

上传人:wj 文档编号:6942275 上传时间:2023-05-07 格式:DOC 页数:10 大小:246KB
下载 相关 举报
Java毕业设计外文翻译文档格式.doc_第1页
第1页 / 共10页
Java毕业设计外文翻译文档格式.doc_第2页
第2页 / 共10页
Java毕业设计外文翻译文档格式.doc_第3页
第3页 / 共10页
Java毕业设计外文翻译文档格式.doc_第4页
第4页 / 共10页
Java毕业设计外文翻译文档格式.doc_第5页
第5页 / 共10页
Java毕业设计外文翻译文档格式.doc_第6页
第6页 / 共10页
Java毕业设计外文翻译文档格式.doc_第7页
第7页 / 共10页
Java毕业设计外文翻译文档格式.doc_第8页
第8页 / 共10页
Java毕业设计外文翻译文档格式.doc_第9页
第9页 / 共10页
Java毕业设计外文翻译文档格式.doc_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java毕业设计外文翻译文档格式.doc

《Java毕业设计外文翻译文档格式.doc》由会员分享,可在线阅读,更多相关《Java毕业设计外文翻译文档格式.doc(10页珍藏版)》请在冰点文库上搜索。

Java毕业设计外文翻译文档格式.doc

你会认为这是一个关于文件的类,但它不是。

你可以用它来表示某个文件的名字,也可以用它来表示目录里一组文件的名字。

如果它表示的是一组文件,那么你还可以用list()方法来进行查询,让它会返回String数组。

由于元素数量是固定的,因此数组会比容器更好一些。

如果你想要获取另一个目录的清单,再建一个File对象就是了。

目录列表器

假设你想看看这个目录。

有两个办法。

一是不带参数调用list()。

它返回的是File对象所含内容的完整清单。

但是,如果你要的是一个"

限制性列表(restrictedlist)"

的话——比方说,你想看看所有扩展名为.java的文件——那么你就得使用"

目录过滤器"

了。

这是一个专门负责挑选显示File对象的内容的类。

FilenameFilter接口的声明:

publicinterfaceFilenameFilter{

booleanaccept(Filedir,Stringname);

}

accept()方法需要两个参数,一个是File对象,表示这个文件是在哪个目录里面的;

另一个是String,表示文件名。

虽然你可以忽略它们中的一个,甚至两个都不管,但是你大概总得用一下文件名吧。

记住,list()会对目录里的每个文件调用accept(),并以此判断是不是把它包括到返回值里;

这个判断依据就是accept()的返回值。

切记,文件名里不能有路径信息。

为此你只要用一个String对象来创建File对象,然后再调用这个File对象的getName()就可以了。

它会帮你剥离路径信息(以一种平台无关的方式)。

然后再在accept()里面用正则表达式(regularexpression)的matcher对象判断,regex是否与文件名相匹配。

兜完这个圈子,list()方法返回了一个数组。

匿名内部类

这是用匿名内部类来征程程序的绝佳机会。

下面我们先创建一个返回FilenameFileter的filter()方法。

//Usesanonymousinnerclasses.

importjava.io.*;

importjava.util.*;

importcom.bruceeckel.util.*;

publicclassDirList2{

publicstaticFilenameFilter

filter(finalStringafn){

//Creationofanonymousinnerclass:

returnnewFilenameFilter(){

Stringfn=afn;

publicbooleanaccept(Filedir,Stringn){

//Strippathinformation:

Stringf=newFile(n).getName();

returnf.indexOf(fn)!

=-1;

}

};

//Endofanonymousinnerclass

}

publicstaticvoidmain(String[]args){

Filepath=newFile("

."

);

String[]list;

if(args.length==0)

list=path.list();

else

list=path.list(filter(args[0]));

Arrays.sort(list,

newAlphabeticComparator());

for(inti=0;

i<

list.length;

i++)

System.out.println(list[i]);

}

注意,filter()的参数必须是final的。

要想在匿名内部类里使用其作用域之外的对象,只能这么做。

这是对前面所讲的代码的改进,现在FilenameFilter类已经与DirList2紧紧地绑在一起了。

不过你还可以更进一步,把这个匿名内部类定义成list()的参数,这样代码会变得更紧凑:

//Buildingtheanonymousinnerclass"

in-place."

publicclassDirList3{

publicstaticvoidmain(finalString[]args){

list=path.list(newFilenameFilter(){

publicboolean

accept(Filedir,Stringn){

Stringf=newFile(n).getName();

returnf.indexOf(args[0])!

}

});

现在该轮到main()的参数成final了,因为匿名内部类要用它的arg[0].

这个例子告诉我们,可以用匿名内部类来创建专门供特定问题用的,一次性的类。

这种做法的好处是,它能把解决某个问题的代码全部集中到一个地方。

但是从另一角度来说,这样做会使代码的可读性变差,所以要慎重。

查看与创建目录

File类的功能不仅限于显示文件或目录。

它还能帮你创建新的目录甚至是目录路径(directorypath),如果目录不存在的话。

此外它还能用来检查文件的属性(大小,上次修改的日期,读写权限等),判断File对象表示的是文件还是目录,以及删除文件。

renameTo()这个方法会把文件重命名成(或者说移动到)新的目录,也就是参数所给出的目录。

而参数本身就是一个File对象。

这个方法也适用于目录。

输入与输出

I/O类库常使用"

流(stream)"

这种抽象。

所谓"

流"

是一种能生成或接受数据的,代表数据的源和目标的对象。

流把I/O设备内部的具体操作给隐藏起来了。

正如JDK文档所示的,Java的I/O类库分成输入和输出两大部分。

所有InputStream和Reader的派生类都有一个基本的,继承下来的,能读取单个或byte数组的read()方法。

同理,所有OutputStream和Writer的派生类都有一个基本的,能写入单个或byte数组的write()方法。

但通常情况下,你是不会去用这些方法的;

它们是给其它类用的——而后者会提供一些更实用的接口。

因此,你很少会碰到只用一个类就能创建一个流的情形,实际上你得把多个对象叠起来,并以此来获取所需的功能。

Java的流类库之所以会那么让人犯晕,最主要的原因就是"

你必须为创建一个流而动用多个对象"

我们最好还是根据其功能为这些class归个类。

Java1.0的类库设计者们是从决定“让所有与输入相关的类去继承InputStream”入手的。

同理,所有与输出相关的类就该继承OutputStream了。

添加属性与适用的接口

使用"

分层对象(layeredobjects)"

,为单个对象动态地,透明地添加功能的做法,被称为DecoratorPattern。

(模式是ThinkinginPatterns(withJava)的主题。

)Decorator模式要求所有包覆在原始对象之外的对象,都必须具有与之完全相同的接口。

这使得decorator的用法变得非常的透明--无论对象是否被decorate过,传给它的消息总是相同的。

这也是JavaI/O类库要有"

filter(过滤器)"

类的原因:

抽象的"

filter"

类是所有decorator的基类。

(decorator必须具有与它要包装的对象的全部接口,但是decorator可以扩展这个接口,由此就衍生出了很多"

类)。

Decorator模式常用于如下的情形:

如果用继承来解决各种需求的话,类的数量会多到不切实际的地步。

Java的I/O类库需要提供很多功能的组合,于是decorator模式就有了用武之地。

但是decorator有个缺点,在提高编程的灵活性的同时(因为你能很容易地混合和匹配属性),也使代码变得更复杂了。

Java的I/O类库之所以会这么怪,就是因为它"

必须为一个I/O对象创建很多类"

,也就是为一个"

核心"

I/O类加上很多decorator。

为InputStream和OutputStream定义decorator类接口的类,分别是FilterInputStream和FilterOutputStream。

这两个名字都起得不怎么样。

FilterInputStream和FilterOutputStream都继承自I/O类库的基类InputStream和OutputStream,这是decorator模式的关键(惟有这样decorator类的接口才能与它要服务的对象的完全相同)。

用FilterInputStream读取InputStream

FilterInputStream及其派生类有两项重要任务。

DataInputStream可以读取各种primitive及String。

(所有的方法都以"

read"

打头,比如readByte(),readFloat())。

它,以及它的搭档DataOutputStream,能让你通过流将primitive数据从一个地方导到另一个地方。

这些"

地方"

都列在表12-4里。

其它的类都是用来修改InputStream的内部行为的:

是不是做缓冲,是不是知道它所读取的行信息(允许你读取行号或设定行号),是不是会弹出单个字符。

后两个看上去更像是给编译器用的(也就是说,它们大概是为Java编译器设计的),所以通常情况下,你是不大会用到它们的。

不论你用哪种I/O设备,输入的时候,最好都做缓冲。

所以对I/O类库来说,比较明智的做法还是把不缓冲当特例(或者去直接调用方法),而不是像现在这样把缓冲当作特例。

外文原文:

JAVAI/OSystem

Creatingagoodinput/output(I/O)systemisoneofthemoredifficulttasksforthelanguagedesigner.

Thisisevidencedbythenumberofdifferentapproaches.Thechallengeseemstobeincoveringalleventualities.NotonlyaretheredifferentsourcesandsinksofI/Othatyouwanttocommunicatewith(files,theconsole,networkconnections),butyouneedtotalktotheminawidevarietyofways(sequential,random-access,buffered,binary,character,bylines,bywords,etc.).

TheJavalibrarydesignersattackedthisproblembycreatinglotsofclasses.Infact,therearesomanyclassesforJava’sI/Osystemthatitcanbeintimidatingatfirst(ironically,theJavaI/Odesignactuallypreventsanexplosionofclasses).TherewasalsoasignificantchangeintheI/OlibraryafterJava1.0,whentheoriginalbyte-orientedlibrarywassupplementedwithchar-oriented,Unicode-basedI/Oclasses.AsaresultthereareafairnumberofclassestolearnbeforeyouunderstandenoughofJava’sI/Opicturethatyoucanuseitproperly.Inaddition,it’sratherimportanttounderstandtheevolutionhistoryoftheI/Olibrary,evenifyourfirstreactionis“don’tbothermewithhistory,justshowmehowtouseit!

”Theproblemisthatwithoutthehistoricalperspectiveyouwillrapidlybecomeconfusedwithsomeoftheclassesandwhenyoushouldandshouldn’tusethem.

ThisarticlewillgiveyouanintroductiontothevarietyofI/OclassesinthestandardJavalibraryandhowtousethem.

TheFileclass

Beforegettingintotheclassesthatactuallyreadandwritedatatostreams,we’lllookautilityprovidedwiththelibrarytoassistyouinhandlingfiledirectoryissues.

TheFileclasshasadeceivingname—youmightthinkitreferstoafile,butitdoesn’t.Itcanrepresenteitherthenameofaparticularfileorthenamesofasetoffilesinadirectory.Ifit’sasetoffiles,youcanaskforthesetwiththelist( 

)method,andthisreturnsanarrayofString.Itmakessensetoreturnanarrayratherthanoneoftheflexiblecontainerclassesbecausethenumberofelementsisfixed,andifyouwantadifferentdirectorylistingyoujustcreateadifferentFileobject.Infact,“FilePath”wouldhavebeenabetternamefortheclass.Thissectionshowsanexampleoftheuseofthisclass,includingtheassociatedFilenameFilterinterface.

Adirectorylister

Supposeyou’dliketoseeadirectorylisting.TheFileobjectcanbelistedintwoways.Ifyoucalllist( 

)withnoarguments,you’llgetthefulllistthattheFileobjectcontains.However,ifyouwantarestrictedlist—forexample,ifyouwantallofthefileswithanextensionof.java—thenyouusea“directoryfilter,”whichisaclassthattellshowtoselecttheFileobjectsfordisplay.

TheDirFilterclass“implements”theinterfaceFilenameFilter.It’susefultoseehowsimpletheFilenameFilterinterfaceis:

Theaccept( 

)methodmustacceptaFileobjectrepresentingthedirectorythataparticularfileisfoundin,andaStringcontainingthenameofthatfile.Youmightchoosetouseorignoreeitherofthesearguments,butyouwillprobablyatleastusethefilename.Rememberthatthelist( 

)methodiscallingaccept( 

)foreachofthefilenamesinthedirectoryobjecttoseewhichoneshouldbeincluded—thisisindicatedbythebooleanresultreturnedbyaccept( 

).

Tomakesuretheelementyou’reworkingwithisonlythefilenameandcontainsnopathinformation,allyouhavetodoistaketheStringobjectandcreateaFileobjectoutofit,thencallgetName( 

),whichstripsawayallthepathinformation(inaplatform-independentway).Thenaccept( 

)usesthearegularexpressionmatcherobjecttoseeiftheregularexpressionregexmatchesthenameofthefile.Usingaccept(),thelist()methodreturnsanarray.

Anonymousinnerclasses

Thisexampleisidealforrewritingusingananonymousinnerclass.Asafirstcut,amethodfilter( 

)iscreatedthatreturnsareferencetoaFilenameFilter:

publicstaticvoidmain(Strin

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2