预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共99页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第14章输入/输出 输入/输出(Input/Output)泛指对某个设备或环境进行数据的输入或输出。例如对硬盘进行输入/输出、对视频设备进行输入/输出、对网络主机进行输入/输出等,可以想象,因设备或环境的不同,会有各式各样的输入/输出问题与解决方案。输入/输出问题在程序设计中实际上是一个很复杂的问题。 对于输入/输出问题,Java将之抽象化为流(Stream)对象来解决。对不同的输入/输出问题,会有相应的流对象提供解决的方案。本章就是要学习Java中各式各样解决输入/输出问题的对象。然而输入/输出问题所涉及的领域相当广,基于学习的角度来看,必须选择一个主题来专门讨论,所以本章主题会围绕在文件输入/输出。有了本章的基础,在了解其他领域的输入/输出问题时就不难入手。 14.1文件 在正式了解Java中如何处理文件输入/输出之前,要先了解一下在Java中如何表示一个文件。本小节也将简单地介绍随机文件存取,让您初步了解文件输入/输出时一些必须注意的事项。 14.1.1File类 不同的操作系统对于文件系统路径的设置各有差别。例如在Windows中,一个路径的表示法可能是: "C:\\Workspace\\CH14\\" 而在Linux下的路径设置可能会像是: "/home/justin/workspace/ch14" Windows的路径指定是使用UNC(UniversalNamingConvention)路径名,以\\开始表示硬盘根目录。如果没有以\\开始表示相对于当前工作目录的路径,C是可选的硬盘指定,后面跟随着:字符。而UNIX-Like系统没有Windows系统的C、D、E这样的硬盘驱动器概念,UNIX-Like系统的路径指定以/开始表示从根目录开始的绝对路径,不以/开始表示相对于当前工作目录的路径。 在程序中设置路径时会有系统相依性的问题,java.io.File类提供一个抽象的、与系统独立的路径表示。给它一个路径字符串,它会将其转换为与系统无关的抽象路径表示,这个路径可以指向一个文件、目录或是URI(UniformResourceIdentifier)。 一个File的实例被建立时,它就不能再被改变内容。File实例除了用作一个文件或目录的抽象表示之外,它还提供了不少相关操作方法:可以用它来对文件系统作一些查询与设置的动作。要注意的是,不管是文件还是目录,在Java中都是以File的实例来表示。 范例14.1是一个设置与操作File实例的简单示范,可以指定查询某个目录下的所有文件与目录名称。 Ü范例14.1FileDemo.java packageonlyfun.caterpillar; importjava.io.*; importjava.util.*; publicclassFileDemo{ publicstaticvoidmain(String[]args){ try{ Filefile=newFile(args[0]); if(file.isFile()){//是否为文件 System.out.println(args[0]+"文件"); System.out.print( file.canRead()?"可读":"不可读"); System.out.print( file.canWrite()?"可写":"不可写"); System.out.println( file.length()+"字节"); } else{ //列出所有的文件及目录 File[]files=file.listFiles(); ArrayList<File>fileList= newArrayList<File>(); for(inti=0;i<files.length;i++){ //先列出目录 if(files[i].isDirectory()){//是否为目录 //取得路径名 System.out.println("["+ files[i].getPath()+"]"); } else{ //文件先存入fileList,待会再列出 fileList.add(files[i]); } } //列出文件 for(Filef:fileList){ System.out.println(f.toString()); } System.out.println(); } } catch(ArrayIndexOutOfBoundsExceptione){ System.out.println( "using:javaFileDemopathname"); } } } 执行结果: javaonlyfun.caterpillar.FileDemoC:\ [C:\WINDOWS] [C:\workspace] [C:\DocumentsandSet