當前位置: 首頁>>代碼示例>>Java>>正文


Java MapMode.READ_ONLY屬性代碼示例

本文整理匯總了Java中java.nio.channels.FileChannel.MapMode.READ_ONLY屬性的典型用法代碼示例。如果您正苦於以下問題:Java MapMode.READ_ONLY屬性的具體用法?Java MapMode.READ_ONLY怎麽用?Java MapMode.READ_ONLY使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在java.nio.channels.FileChannel.MapMode的用法示例。


在下文中一共展示了MapMode.READ_ONLY屬性的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: MemoryMappedFile

public MemoryMappedFile(File file, String mode, long offset, long size) throws IOException {
    if (size >= Integer.MAX_VALUE) {
        throw new IllegalArgumentException("jvm doesn't support mapped file more than 2g");
    }
    MapMode mapmode = null;
    if (mode.equals("r")) {
        mapmode = MapMode.READ_ONLY;
    }
    else if (mode.equals("rw")) {
        mapmode = MapMode.READ_WRITE;
    }
    else {
        throw new IllegalArgumentException();
    }
    
    if ((mapmode == MapMode.READ_WRITE) && !file.exists()) {
        File parent = file.getAbsoluteFile().getParentFile();
        long free = parent.getUsableSpace();
        if ((size * 4) > free) {
            throw new HumpbackException("out of storage space: " + file.toString() + ' ' + free);
        }
    }
    
    this.file = file;
    boolean exist = this.file.exists();
    this.raf = new RandomAccessFile(file, mode);
    this.channel = raf.getChannel();
    this.buf = channel.map(mapmode, offset, size);
    this.buf.order(ByteOrder.nativeOrder());
    this.addr = UberUtil.getAddress(buf);
    _log.debug(String.format("mounted %s %s %s at 0x%016x with length 0x%08x",
            exist ? "exist" : "new",
            file.toString(), 
            mode, 
            addr, 
            size));
}
 
開發者ID:waterguo,項目名稱:antsdb,代碼行數:37,代碼來源:MemoryMappedFile.java

示例2: map

/**
 * Note: copied from Google Guava under Apache License v2.
 * 
 * Maps a file in to memory as per
 * {@link FileChannel#map(java.nio.channels.FileChannel.MapMode, long, long)}
 * using the requested {@link MapMode}.
 *
 * <p>Files are mapped from offset 0 to {@code size}.
 *
 * <p>If the mode is {@link MapMode#READ_WRITE} and the file does not exist,
 * it will be created with the requested {@code size}. Thus this method is
 * useful for creating memory mapped files which do not yet exist.
 *
 * <p>This only works for files <= {@link Integer#MAX_VALUE} bytes.
 *
 * @param file the file to map
 * @param mode the mode to use when mapping {@code file}
 * @param offset
 * @param len
 * @return a buffer reflecting {@code file}
 *
 * @see FileChannel#map(MapMode, long, long)
 * @since 2.0
 */
public static MappedByteBuffer map(File file, MapMode mode, long offset, long len) {
    N.requireNonNull(file);
    N.requireNonNull(mode);

    RandomAccessFile raf = null;

    try {
        raf = new RandomAccessFile(file, mode == MapMode.READ_ONLY ? "r" : "rw");
        return raf.getChannel().map(mode, offset, len);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    } finally {
        IOUtil.closeQuietly(raf);
    }
}
 
開發者ID:landawn,項目名稱:AbacusUtil,代碼行數:39,代碼來源:IOUtil.java


注:本文中的java.nio.channels.FileChannel.MapMode.READ_ONLY屬性示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。