Java 使用 NIO 方式读文件

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.io.File;
import java.io.RandomAccessFile;
import java.io.IOException;

/**
 * Create a file with holes in it.
 *
 */
public class FileHole
{
   public static void main (String [] argv)
      throws IOException
   {
      // create a temp file, open for writing and get a FileChannel
      File temp = File.createTempFile ("holy", null);
      RandomAccessFile file = new RandomAccessFile (temp, "rw");
      FileChannel channel = file.getChannel();
      // create a working buffer
      ByteBuffer byteBuffer = ByteBuffer.allocateDirect (100);

      putData (0, byteBuffer, channel);
      putData (5000000, byteBuffer, channel);
      putData (50000, byteBuffer, channel);

      // Size will report the largest position written, but
      // there are two holes in this file.  This file will
      // not consume 5MB on disk (unless the filesystem is
      // extremely brain-damaged).
      System.out.println ("Wrote temp file '" + temp.getPath()
         + "', size=" + channel.size());

      channel.close();
      file.close();
   }

   private static void putData (int position, ByteBuffer buffer,
      FileChannel channel)
      throws IOException
   {
      String string = "*<-- location " + position;

      buffer.clear();
      buffer.put (string.getBytes ("US-ASCII"));
      buffer.flip();

      channel.position (position);
      channel.write (buffer);
   }
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:备份mysql数据的php代码

下一篇:Java通过JavaMail的MimeUtility对字符串进行Base64编码