购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第二卷 第九章 Java输入输出操作

9.1Java输入输出流

所有的程序语言都提?copy;与本机文件系统交互的方式;Java也不例外。我们将看看Java是怎样处理标准文件输入输出的(包括stdin,stout,stderr)。当你在网络上开发小程序时,你必须注意直接文件输入输出是不安全因素的关键。大多数用户设置他们的浏览器,可让你自由的访问他们的文件系统,但有?copy;不让你访问。当然,如果你开发你内部的应用程序,你也许需要直接访问文件。标准输入输出Unix的用户,或其他基于命令行系统的用户(如DOS),都知道标准输入输出的含义。标准输入文件是键盘,标准输出文件是你的终端屏幕。标准错误输出文件也指向屏幕,如果有必要,它也可以指向另一个文件以便和正常输出区分。

系统类Java通过系统类达到访问标准输入输出的功能。上面提到的三个文件在这个系统类中实现:StdinSystem.in作为InputStream类的一个实例来实现stdin,你可以使用read和skip(longn)两个成员函数。read让你从输入中读一个字节,skip(longn)让你在输入中跳过n个字节。

StoutSystem.out作为PrintStream来实现stdout,你可以使用print和println两个成员函数。这两个函数支持Java的任意基本类型作为参数。

StderrSystem.err同stdout一样实现stderr。象System.out一样,你可以访问PrintStream成员函数。

9.2标准输入输出例子

这里有一个例子,功能象Unix里的cat或type:importjava.io.*classmyCat{publicvoidmain(Stringargs)throwsIOException{intb;intcount=0;while((b=System.in.read)!=

-1){count++;System.out.print((char)b);}System.out.println;

//blanklineSystem.err.println(\"counted\"+count+\"totalbytes.\");}}

9.3普通输入输出类

除了基本的键盘输入和屏幕输出外,我们还需要联系文件的输入输出。我们将学习下面几个类:lFileInputStreamlDataInputStreamlFileOutputStreamlDataOutputStream

作为参考,再列出一?copy;特定应用的类:lPipedInputStreamlBufferedInputStreamlPushBackInputStreamlStreamTokenizerlPipedOutputStreamlBufferedOutputStreamlRandomAccessFile

我们不在此讨论这?copy;类,但你可以在JAVA_HOME/src/java/io目录里查看每个类的成员函数定义。

9.4文件

在我们进行文件操作时,需要知道关于文件的信息。File类提?copy;了一?copy;成员函数来操纵文件和获得文件的信息。

9.4.1创建一个新的文件对象

你可用下面三个方法来创建一个新文件对象:FilemyFile;myFile=newFile(\"etc/motd\");或myFile=newFile(\"/etc\",\"motd\");//moreusefulifthedirectoryorfilenamearevariables或FilemyDir=newfile(\"/etc\");myFile=newFile(myDir,\"motd\");

这三种方法取决于你访问文件的方式。例如,如果你在应用程序里只用一个文件,第一种创建文件的结构是最容易的。但如果你在同一目录里打开数个文件,则第二种或第三种结构更好。

9.4.2文件测试和使用

一但你创建了一个文件对象,你便可以使用以下成员函数来获得文件相关信息:文件名lStringgetNamelStringgetPathlStringgetAbslutePathlStringgetParentlbooleanrenameTo(FilenewName)文件测试lbooleanexistslbooleancanWritelbooleancanReadlbooleanisFilelbooleanisDirectorylbooleanisAbsolute一般文件信息llonglastModifiedllonglength目录用法lbooleanmkdirlStringlist

9.4.3文件信息获取例子程序

这里是一个独立的显示文件的基本信息的程序,文件通过命令行参数传输:

importjava.io.*;classfileInfo{FilefileToCheck;publicstaticvoidmain(Stringargs)throwsIOException{if(args.length>0){for(inti=0;i UOKLdx6KQbChKa5AdYlVidU8HjXyfg4WuIBk8d5QVLrKj3CAsuAcq/md2V37JHXd

点击中间区域
呼出菜单
上一章
目录
下一章
×