<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                <!-- Memory-Mapped Files --> ## 內存映射文件 內存映射文件能讓你創建和修改那些因為太大而無法放入內存的文件。有了內存映射文件,你就可以認為文件已經全部讀進了內存,然后把它當成一個非常大的數組來訪問。這種解決辦法能大大簡化修改文件的代碼: ```java // newio/LargeMappedFiles.java // (c)2017 MindView LLC: see Copyright.txt // 我們無法保證該代碼是否適用于其他用途。 // 訪問 http://OnJava8.com 了解更多本書信息。 // 使用內存映射來創建一個大文件 import java.nio.*; import java.nio.channels.*; import java.io.*; public class LargeMappedFiles { static int length = 0x8000000; // 128 MB public static void main(String[] args) throws Exception { try( RandomAccessFile tdat = new RandomAccessFile("test.dat", "rw") ) { MappedByteBuffer out = tdat.getChannel().map( FileChannel.MapMode.READ_WRITE, 0, length); for(int i = 0; i < length; i++) out.put((byte)'x'); System.out.println("Finished writing"); for(int i = length/2; i < length/2 + 6; i++) System.out.print((char)out.get(i)); } } } ``` 輸出結果: ``` Finished writing xxxxxx ``` 為了讀寫,我們從 **RandomAccessFile** 開始,獲取該文件的通道,然后調用 `map()` 來生成 **MappedByteBuffer** ,這是一種特殊的直接緩沖區。你必須指定要在文件中映射的區域的起始點和長度—這意味著你可以選擇映射大文件的較小區域。 **MappedByteBuffer** 繼承了 **ByteBuffer**,所以擁有**ByteBuffer** 全部的方法。這里只展示了 `put()` 和 `get()` 的最簡單用法,但是你也可以使用 `asCharBuffer()` 等方法。 使用前面的程序創建的文件長度為 128MB,可能比你的操作系統單次所允許的操作的內存要大。該文件似乎可以同時訪問,因為它只有一部分被帶進內存,而其他部分被交換出去。這樣,一個非常大的文件(最多 2GB)可以很容易地修改。**注意**,操作系統底層的文件映射工具用于性能的最大化。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看