9.5 输入流
InputStream SequenceInputStream FileInputStream PipedInputStream ByteArrayInputStream FileterInputStream StringBufferInputStream
DataInputStream LineNumberInputStream PushbackInputStream BufferedInputStream 有好几个类是专门用来处理文件输入的。下面是文件输入类的层次结构:
9.5.1 FileInputStream 对象
FileInputStream典型地表示一种顺序访问的文本文件。通过使用FileInputStream你可以访问文件的一个字节、几个字节或整个文件。
9.5.2 打开FileInputStream
为一个文件打开输入流FileInputStream,你必须将文件名或文件对象传送给结构:
FileInputStream myFileStream;
myFileStream = new FileInputStream ( "/etc/motd");
你还可以象下边这样从FileInputStream里读文件信息:
File myFile ;
FileInputSteam myFileStream;
myFile = new File("/etc/motd");
myFileStream = new FileInputStream(myFile);
FileInputStream输入流打开,你就可以从里面读取信息了。read()成员函数有以下几种选项:
int read(); //reads one byte //return -1 at end of stream
int read(byte b[]); //fills entire array,if possible //returns number of bytes read //returns -1 if end of stream is reached
int read(byte b[],int offset, int len)
//reads len bytes into b starting at b[offset]
//Returns number of bytes read,
//or -1 if end of stream is reached.
9.5.3 关闭FileInputStream
当你完成一个文件的操作,你可选两种方法关闭它: 显式关闭和隐式关闭,隐式关闭是自动垃圾回收时的功能。
显式关闭如下:myFileStream.close();
9.6 例程:显示一个文件
如果文件的访问权限足够,你可以在TextArea对象里显示文件内容。
下面是显示文件的程序片断:
FileInputStream fis;
TextArea ta;
public vod init(){
byte b[] = new byte [1024];
int I; //make it big enough or wait until you //know the size of the file String s;
try {
fis = new FileInputStream("/etc/motd");
}
catch(FileNotFoundException e) {
/*do something appropriate */
}
try {
I= fis.read(b);
}
catch(IOException e) {
/* do something appropriate */
}
s = new String(b, 0);
ta = new TextArea(s,5,40); add (ta);
}
9.7 DataInputStreams
DataInputStreams与FileInputStreams差不多。Data流可以直接读任意一种变 量类型, 如浮点数,整数和字符等。一般来说,对二进制文件使用DataInputStream流。
9.7.1 打开和关闭DataInputStreams
打开和关闭DataInputStreams对象时, 其方法与FileInputStreams相同:
DataInputStreams myDataStream;
FileInputStreams myFileStream;
//get a file handle
myFileStream = new FileInputStream("/usr/db/stock.dbf");
//open,or "chain" a data input file
myDataStream = new DataOutputStream(myFileStream);
//Now we can use both input streams to access our file
//j(If we want to...)
myFileStream.read(b);
I = myDataStrea.readInt();
//close the data friel explicityly
//Always close the "topmost" file stream
myDataStream.close();
myFileStream.close();
9.7.2 读DataInputStreams
当你从DataInputStreams流里访问文件时,你可以使用与FileInputStream流相同的成员函数 read()。 但你也可以使用其他访问方法来读取不同种类的数据:
byte readByte(),int readUnsignedByte(),short readShort(),int readUnsighedShort(),char readChar(),int readInt(),long readLong(),float readFloat(),double readDouble(),String readLine() 以上每一个成员函数都读取相应的数据对象。象String readLine()成员函数,你可使用/n,/r,/r/n,或EOF作为字符 结束 符。
读一个长整型,例如:
long serialNo;
serialNo = myDataStream.readLong();
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。