位置:首頁 > Java技術 > Java.io包 > java.io.RandomAccessFile.read((byte[] b,int off,int len)方法實例

java.io.RandomAccessFile.read((byte[] b,int off,int len)方法實例

java.io.RandomAccessFile.read((byte[] b,int off,int len) 方法從此文件讀取多達len個字節數據到一個字節數組。

聲明

以下是java.io.RandomAccessFile.read()方法的聲明

public int read(byte[] b,int off,int len)

參數

  • b -- 數據被讀出緩衝器中。

  • off -- 在數組b在其中寫入數據的起始位置的偏移。

  • len -- 讀出的最大字節數。

返回值

此方法將返回讀入緩衝區的總字節數,或如果冇有更多的數據,因為該文件的末尾已到達返回-1。

異常

  • IOException --如果發生I/ O錯誤。如果已經達到文件結束不會拋出。

  • NullPointerException -- 如果b為null。

  • IndexOutOfBoundsException -- 如果off為負,len為負,或len大於b.length- off。

例子

下麵的示例演示java.io.RandomAccessFile.read()方法的用法。

package com.yiibai;

import java.io.*;

public class RandomAccessFileDemo {

   public static void main(String[] args) {
      try {
         byte[] b1 = {1, 2, 3};
         byte[] b2 = {1, 2, 3, 4, 5, 6, 7, 8};

         // create a new RandomAccessFile with filename test
         RandomAccessFile raf = new RandomAccessFile("c:/test.txt", "rw");

         // write something in the file
         raf.writeUTF("Hello World");

         // set the file pointer at 0 position
         raf.seek(0);

         // read 2 bytes, starting from 1
         System.out.println("" + raf.read(b1, 1, 2));

         // set the file pointer at 0 position
         raf.seek(0);

         // read 3 bytes, starting from 4rth
         System.out.println("" + raf.read(b2, 4, 3));
      } catch (IOException ex) {
         ex.printStackTrace();
      }

   }
}

假設我們有一個文本文件c:/ test.txt,它具有以下內容。該文件將被用作輸入到我們的示例程序:

ABCDE  

讓我們編譯和運行上麵的程序,這將產生以下結果:

2
3