The Gathering Write : FileChannel « File « Java Tutorial






import java.io.File;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class MainClass {
  public static void main(String[] args) {
    try {
      test();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  private static void test() throws Exception {
    long[] primes = new long[] { 1, 2, 3, 5, 7 };
    File aFile = new File("C:/test/primes.txt");
    FileOutputStream outputFile = null;
    outputFile = new FileOutputStream(aFile);
    FileChannel file = outputFile.getChannel();
    ByteBuffer[] buffers = new ByteBuffer[3];
    buffers[0] = ByteBuffer.allocate(8);
    buffers[2] = ByteBuffer.allocate(8);
    String primeStr = null;
    for (long prime : primes) {
      primeStr = "prime = " + prime;
      buffers[0].putDouble((double) primeStr.length()).flip();
      buffers[1] = ByteBuffer.allocate(primeStr.length());
      buffers[1].put(primeStr.getBytes()).flip();
      buffers[2].putLong(prime).flip();
      file.write(buffers);
      buffers[0].clear();
      buffers[2].clear();
    }
    System.out.println("File written is " + file.size() + "bytes.");
    outputFile.close();
  }
}








11.51.FileChannel
11.51.1.Get FileChannel from FileInputStream
11.51.2.Using FileChannel to read text file
11.51.3.Using FileChannel to random access to a File
11.51.4.Writing and Appending a ByteBuffer to a File
11.51.5.A channel for a physical file
11.51.6.Using a Channel to Write a String to a File
11.51.7.Writing a String as Bytes
11.51.8.Writing Varying Length Strings to a File
11.51.9.Writing Numerical Data to a File
11.51.10.Writing Mixed Data to a File
11.51.11.The Gathering Write
11.51.12.Copying Files using FileChannel
11.51.13.New IO Copier
11.51.14.New IO Duplicator
11.51.15.Locking Copier
11.51.16.File concatenation based on new IO
11.51.17.New IO Transfer
11.51.18.Save and read text using FileChannel with UTF-16BE encoding
11.51.19.Save and read text using FileChannel without encoding
11.51.20.Using transferTo() between channels
11.51.21.Test overlapping locks on different file channels
11.51.22.Lock a FileChannel and release the lock
11.51.23.Create a read-only memory-mapped file
11.51.24.Create a read-write memory-mapped file
11.51.25.Copying a file using channels and buffers