<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 讀寫隨機訪問文件 使用 `RandomAccessFile` 就像是使用了一個 `DataInputStream` 和 `DataOutputStream` 的結合體(因為它實現了相同的接口:`DataInput` 和 `DataOutput`)。另外,我們還可以使用 `seek()` 方法移動文件指針并修改對應位置的值。 在使用 `RandomAccessFile` 時,你必須清楚文件的結構,否則沒法正確使用它。`RandomAccessFile` 有一套專門的方法來讀寫基本數據類型的數據和 UTF-8 編碼的字符串: ```java // iostreams/UsingRandomAccessFile.java import java.io.*; public class UsingRandomAccessFile { static String file = "rtest.dat"; public static void display() { try ( RandomAccessFile rf = new RandomAccessFile(file, "r") ) { for (int i = 0; i < 7; i++) System.out.println( "Value " + i + ": " + rf.readDouble()); System.out.println(rf.readUTF()); } catch (IOException e) { throw new RuntimeException(e); } } public static void main(String[] args) { try ( RandomAccessFile rf = new RandomAccessFile(file, "rw") ) { for (int i = 0; i < 7; i++) rf.writeDouble(i * 1.414); rf.writeUTF("The end of the file"); rf.close(); display(); } catch (IOException e) { throw new RuntimeException(e); } try ( RandomAccessFile rf = new RandomAccessFile(file, "rw") ) { rf.seek(5 * 8); rf.writeDouble(47.0001); rf.close(); display(); } catch (IOException e) { throw new RuntimeException(e); } } } ``` 輸出結果: ``` Value 0: 0.0 Value 1: 1.414 Value 2: 2.828 Value 3: 4.242 Value 4: 5.656 Value 5: 7.069999999999999 Value 6: 8.484 The end of the file Value 0: 0.0 Value 1: 1.414 Value 2: 2.828 Value 3: 4.242 Value 4: 5.656 Value 5: 47.0001 Value 6: 8.484 The end of the file ``` `display()` 方法打開了一個文件,并以 `double` 值的形式顯示了其中的七個元素。在 `main()` 中,首先創建了文件,然后打開并修改了它。因為 `double` 總是 8 字節長,所以如果要用 `seek()` 定位到第 5 個(從 0 開始計數) `double` 值,則要傳入的地址值應該為 `5*8`。 正如前面所訴,雖然 `RandomAccess` 實現了 `DataInput` 和 `DataOutput` 接口,但實際上它和 I/O 繼承體系中的其它部分是分離的。它不支持裝飾,故而不能將其與 `InputStream` 及 `OutputStream` 子類中的任何一個組合起來,所以我們也沒法給它添加緩沖的功能。 該類的構造器還有第二個必選參數:我們可以指定讓 `RandomAccessFile` 以“只讀”(r)方式或“讀寫” (rw)方式打開文件。 除此之外,還可以使用 `nio` 中的“內存映射文件”代替 `RandomAccessFile`,這在[附錄:新 I/O](Appendix-New-IO.md)中有介紹。
                  <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>

                              哎呀哎呀视频在线观看