File Input Output Java

//package com.ryanm.util;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.util.Random;
/**
 * @author ryanm
 */
public class BufferTest {
  private ByteBuffer bb;
  private FloatBuffer floats;
  private float[] data;
  /**
   * @param args
   */
  public static void main(String[] args) {
    new BufferTest().run();
  }
  private void run() {
    final int size = 100000;
    bb = ByteBuffer.allocateDirect(4 * size).order(ByteOrder.nativeOrder());
    floats = bb.asFloatBuffer();
    data = data(size);
    System.out.println("# size\tsingle\tindexed\tbatch");
    int base = 0;
    int e = size;
    while (base + e > 100) {
      test(base + e);
      e /= 2;
    }
  }
  private void test(int elements) {
    int time = 1000;
    System.out.print(elements + "\t");
    long kbps = singlePut(data, elements, floats, time);
    System.out.print(kbps + "\t");
    kbps = singleIndexedPut(data, elements, floats, time);
    System.out.print(kbps + "\t");
    kbps = bulkPut(data, elements, floats, time);
    System.out.println(kbps + "\t");
  }
  private long singlePut(float[] data, int elements, FloatBuffer target,
      int testTime) {
    long start = System.currentTimeMillis();
    long elapsed = 0;
    int reps = 0;
    target.clear();
    do {
      for (int i = 0; i < elements; i++) {
        target.put(data[i]);
      }
      target.flip();
      reps++;
      elapsed = System.currentTimeMillis() - start;
    } while (elapsed < testTime);
    long bytes = (long) elements * (long) reps * 4;
    return bytes / elapsed / 1024;
  }
  private long singleIndexedPut(float[] data, int elements,
      FloatBuffer target, int testTime) {
    long start = System.currentTimeMillis();
    long elapsed = 0;
    int reps = 0;
    target.clear();
    do {
      for (int i = 0; i < elements; i++) {
        target.put(i, data[i]);
      }
      reps++;
      elapsed = System.currentTimeMillis() - start;
    } while (elapsed < testTime);
    long bytes = (long) elements * (long) reps * 4;
    return bytes / elapsed / 1024;
  }
  private long bulkPut(float[] data, int elements, FloatBuffer target,
      int testTime) {
    long start = System.currentTimeMillis();
    long elapsed = 0;
    int reps = 0;
    target.clear();
    do {
      target.put(data, 0, elements);
      target.flip();
      reps++;
      elapsed = System.currentTimeMillis() - start;
    } while (elapsed < testTime);
    long bytes = (long) elements * (long) reps * 4;
    return bytes / elapsed / 1024;
  }
  private float[] data(int elements) {
    float[] data = new float[elements];
    Random rng = new Random();
    for (int i = 0; i < data.length; i++) {
      data[i] = 100 * rng.nextFloat();
    }
    return data;
  }
}