2017-03-20 16 views
-1

RandomAccessFile的具有close()方法結合以下描述:在Java中打開RandomAccessFile意味着什麼?

關閉此隨機訪問文件流並釋放與該流相關的所有系統資源。

什麼意思方式打開一個RandomAccessFile?我問,因爲沒有open()方法。當我們執行諸如讀寫等任務時,打開RandomAccessFile只是隱含的嗎?爲什麼沒有open()方法?沒有同時執行任何其他任務,只打開一個RandomAccessFile是否有意義?

+1

爲什麼'File'上沒有'open'?基本的io api在流上運行,只需通過相關的oracle教程。 – pvg

+0

我從來沒有想過要閱讀oracle文檔。感謝您的洞察力。 –

回答

1

在Java文檔中所述的文件使用構造函數創建 https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html

RandomAccessFile的(文件文件,字符串模式)創建一個隨機訪問文件 流從閱讀,和任選地寫入,則文件參數由 指定。

RandomAccessFile(字符串名稱,字符串模式)創建一個隨機訪問 文件流從指定的名稱讀取並可選地寫入文件,該文件的名稱爲 。

準確地說:

創建一個隨機存取文件流從閱讀,並且可選地 寫入,具有指定名稱的文件。創建一個新的FileDescriptor對象 以表示與該文件的連接。模式參數 指定要打開文件的訪問模式。所述 允許值和它們的含義爲 RandomAccessFile的(文件,String)構造如指定。

如果存在安全管理器,則使用 name參數調用其checkRead方法作爲其參數,以查看是否允許對文件的讀取訪問權限爲 。如果模式允許寫入,安全管理器的checkWrite 法也叫這個名字作爲其參數來查看是否允許 該文件的寫權限。

由於在Java中沒有明確的析構函數(據我所知),您需要關閉明確,一旦你創建了一個RandomAccessFile的文件。

+0

因此,一旦我們關閉了RandomAccessFile,流就關閉了,我們將不得不實例化一個新的文件,以便再次在文件上「rw」? –

+0

我沒有測試它myslef,但這就是我從java文檔中獲取它的方式。做一個2線sto迷你項目說服自己:) – LoneWanderer

1

當你創建RandomAccessFile對象就好像調用隱含的open方法的新實例。
在創建對象的過程中,還會創建一個新的FileDescriptor對象來表示與該文件的連接。

我建議使用try-with-resources聲明創建此對象,因爲RandomAccessFile實現了接口java.lang.AutoCloseable

try (RandomAccessFile stmt = new RandomAccessFile("file.txt", "rw")) { 
    // your code 
} catch (IOException e) { 
    // Exception handling 
}