Java 使用 NIO 方式读文件详解编程语言

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); 
   } 
}

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11033.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论