2012年计算机二级Java输入输出操作学习教程

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

9.12 DataOutput流

  和DataInputStream对 应,Java还 提 ?copy; 了DataOutput流。 使 用DataOutput流,我 们 可 以 向 文 件 写 入 二 进 制 数 据。

  9.12.1 打开和关闭DataOutput流对象

  打开和关闭DataOutput流对象与打开、关闭FileOutput流对象方法一样:

  DataOutputStream myDataStream;

  FileOutputStream myFileStream;

  BufferedOutputStream myBufferStream;

  //get a file handle mhyFileStream = new FileOutputStream("/usr/db/stock.dbf");

  //chain a buffered output stream (for efficiency);

  myBufferStream = new BufferedOutputStream(myFileStream);

  //chain a data output file

  myDataStream = new DataOutputStream(myBufferStream);

  //Now we can use both input streams to access our file

  //(iiIf we want to ...)

  myBufferStream.write(b);

  myDataStream.writeInt(i);

  //close the data file explicitly

  //Always colse the "topmost" file stream

  myDataStream.close();

  myBuffersStream.close();

  myFileStream.close();

  9.12.2 向DataOutput流写数据

  FileOutput流里的write()函数各种方法都适用于DataOutput流。你还可以看到DataInput流的类似函数方法:

  void writeBoolean (boolean v) ;

  void writeByte (int v) ;

  void writeShort (int v) ;

  void writeChar (int v) ;

  void writeInt (int v) ;

  void writeFloat (float v) ;

  void writeDouble (double v) ;

  void writeBytes (string s) ;

  void writeChars (string s)

  对字符来说,有两种选择:byte和char。 记住byte是8位数据而char是16位数据。如果你想利用Unicode字符的优点,你应使用writeChars()函数。

  9.12.3 输出记数

  在使用二进制数据输出时常用的另外一个函数是size()。这个函数返回写入文件数据的总字 节数。你也可用size()函数将数据文件分成四字节为单位的块,例如:

  int bytesLeft = myDataStream.size()%4;

  for (int I = 0; I< bytesLeft; I++) {

  myDataStrea.write(0);

  }

9.13 随机访问文件

  我们读文件常常不是从头至尾顺序读的。也许想将一文本文件当作一个数据库, 读完一个记录后,跳到另一个记录,它们在文件的不同地方。Java提出了RandomAccessFile类让操作这种类型的输入输出。

  9.13.1 创建随机访问文件

  打开随机访问文件有两种方法:

  1. 用文件名

  myRAFile = new RandomAccessFile(String name,String mode);

  2. 用文件对象

  myRAFile = new RandomAccessFile(File file,String mode);

  mode参数决定了访问文件的权限, 如只读'r'或读写'wr'等。

  例如, 我们打开一个数据库更新数据:

  RandomAccessFile myRAFile;

  myRAFile = new RandomAccessFile("/usr/db/stock.dbf","rw");

  9.13.2 访问信息

  RandomAccessFile对象的读写操作和DataInput/DataOutput对象的操作方式 一 样。 你可以使用在DataInputStream 和DataOutputStream里出现的所有read()和write()函数。

  还有几个函数帮助你在文件里移动指针:

  long getFilePointer(); 返回当前指针;

  void seek(long pos); 将文件指针定位到一个绝对地址。地址是相对于文件头的偏移量。地址0表示文件的开头。

  long length(); 返回文件的长度。 地址"length()"表示文件的结尾。

  9.13.3 增加信息

  你可以使用随机访问文件来设置成增加信息模式:

  myRAFile = new RandomAccessFile("/tmp/java.log","rw");

  myRAFile.seek(myRAFile.length()); //Any subsequent write()s will be appended to the file

  9.13.4 追加信息例子

  下面是一个在已存在文件后面追加字符的例子:

  import java.io.IOException;

  import java.io.RandomAccessFile;

  public class raTest {

  public static void main(String args[]) throws IOException {

  RandomAccessFile myFAFile;

  String s = "Information to Append/nHi mom!/n";

  //open our random access file

  myRAFile = new RandomAccessFile("/tmp/java.log","rw");

  //move to the end of the file

  myRAFile.seek(myRAFile.length());

  //Start appending!

  myRAFile.writeBytes(s);

  myRAFile.close();

  }

  }

本章小结

  1. Java通过系统类达到访问标准输入输出的功能。

  2. 你可以创建、读、写文件。

上一页234下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答