国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Java 內(nèi)存通道

2018-02-07 11:50 更新

Java IO教程 - Java內(nèi)存通道


對(duì)文件執(zhí)行I/O的另一種方法是將文件的一個(gè)區(qū)域映射到物理內(nèi)存,并將其作為內(nèi)存數(shù)組。

我們可以使用MappedByteBuffer來(lái)執(zhí)行內(nèi)存映射文件I/O。

要使用內(nèi)存映射文件I/O,請(qǐng)為文件獲取FileChannel對(duì)象,并使用FileChannel的map()方法獲取MappedByteBuffer。

直接讀取或?qū)懭胗成涞淖止?jié)緩沖區(qū),而不是使用FileChannel對(duì)象的read()或write()方法。

當(dāng)從映射的字節(jié)緩沖區(qū)讀取時(shí),我們從已經(jīng)映射的文件的區(qū)域讀取。

當(dāng)寫(xiě)入映射的字節(jié)緩沖區(qū)時(shí),我們寫(xiě)入文件的映射區(qū)域。

要將數(shù)據(jù)立即寫(xiě)入映射字節(jié)緩沖區(qū)到存儲(chǔ)設(shè)備,我們需要使用映射字節(jié)緩沖區(qū)的force()方法。

我們可以以只讀,讀寫(xiě)或私有模式映射文件的區(qū)域。

在只讀模式下,我們只能從映射的字節(jié)緩沖區(qū)讀取。

在讀寫(xiě)模式下,我們可以從映射字節(jié)緩沖區(qū)讀取以及寫(xiě)入。

專用模式也稱為寫(xiě)時(shí)復(fù)制模式。當(dāng)多個(gè)程序映射文件的相同區(qū)域時(shí),所有程序共享文件的相同區(qū)域。

當(dāng)程序修改映射區(qū)域時(shí),僅為該程序創(chuàng)建該區(qū)域的單獨(dú)副本,該副本是其私有副本。對(duì)私人副本所做的任何修改對(duì)其他程序不可見(jiàn)。


例子

下面的代碼以只讀模式映射整個(gè)文件test.txt。它讀取文件并在標(biāo)準(zhǔn)輸出上顯示內(nèi)容。

import java.io.FileInputStream;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

public class Main {
  public static void main(String[] args)throws Exception {
    FileInputStream fis = new FileInputStream("test.txt");
    FileChannel fc = fis.getChannel();

    long startRegion = 0;
    long endRegion = fc.size();
    MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ONLY, startRegion,
        endRegion);
    while (mbb.hasRemaining()) {
      System.out.print((char) mbb.get());
    }
    fis.close();
  }
}

上面的代碼生成以下結(jié)果。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)