Java 使用 NIO 方式讀文件

m4ed 9年前發布 | 1K 次閱讀 Java

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

 本文由用戶 m4ed 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!