国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java IO : RandomAccessFile

miracledan / 3310人閱讀

摘要:,除了具有的特點(diǎn)外,這個(gè)模式要求對(duì)文件內(nèi)容和文件元數(shù)據(jù)的每一個(gè)更新都會(huì)同步更新至底層的物理存儲(chǔ)。

RandomAccessFile概覽

對(duì)文件的讀取,既可以按順序,也可以以任意順序來(lái)讀取。
RandomAccessFile提供這樣一種功能。其保存一個(gè)指向當(dāng)前文件位置的指針,可以通過(guò)調(diào)整指針的位置,讀取一個(gè)文件中任意的內(nèi)容。通過(guò)一段簡(jiǎn)單的代碼來(lái)有個(gè)大體的認(rèn)識(shí):

RandomAccessFile raf = new RandomAccessFile("abc.log", "r");
int logIndex = 10;
raf.seek(logIndex);
//接下來(lái)通過(guò)raf進(jìn)行文件操作
構(gòu)造器

RandomAccessFile提供了兩個(gè)構(gòu)造器

RandomAccessFile(File file, String mode)
RandomAccessFile(String path, String mode)
模式

通過(guò)RandomAccessFile打開一個(gè)文件需要指定打開的模式,構(gòu)造參數(shù)中的mode有四種模式可以選擇:

"r",以只讀的方式打開一個(gè)已存在的文件,不可對(duì)文件進(jìn)行寫操作。

"rw",以讀寫的方式打開一個(gè)已存在的文件,若文件不存在,則創(chuàng)建一個(gè),可對(duì)該文件進(jìn)行讀寫操作。

"rwd",除了具有"rw"的特點(diǎn)外,這個(gè)模式要求對(duì)文件內(nèi)容的每一個(gè)更新都會(huì)同步更新至底層的物理存儲(chǔ)。

"rws",除了具有"rw"的特點(diǎn)外,這個(gè)模式要求對(duì)文件內(nèi)容和文件元數(shù)據(jù)的每一個(gè)更新都會(huì)同步更新至底層的物理存儲(chǔ)。

文件的元數(shù)據(jù)并非指文件的內(nèi)容本身,文件的大小以及文件的最后修改時(shí)間等等算是元數(shù)據(jù)的一部分

顯然,如果指定了rwdrws模式,那么對(duì)于文件的操作將會(huì)相對(duì)比較慢一些。

讀寫

RandomAccessFile內(nèi)部維護(hù)了一個(gè)指針,指向當(dāng)前讀取或者寫入的位置,當(dāng)通過(guò)RandomAccessFile打開一個(gè)已存在的文件或者創(chuàng)建一個(gè)新文件時(shí),指針自動(dòng)指向下標(biāo)為0的位置。進(jìn)行寫入操作時(shí),如果指針已經(jīng)指向文件的末尾,那么文件的大小將會(huì)被擴(kuò)大。

當(dāng)需要進(jìn)行讀取或者寫入時(shí),首先通過(guò)void seek(long pos)將文件的指針指向你想要讀取或?qū)懭氲奈恢茫x取時(shí)有以下常用的方法可以進(jìn)行讀取:

int read() //讀取下一個(gè)字節(jié)

int read(byte[] b) //將讀取的字節(jié)裝入b數(shù)組中

char readChar() //讀取兩個(gè)字節(jié),并將其轉(zhuǎn)型為char類型

int readInt() //讀取四個(gè)字節(jié),并將其轉(zhuǎn)型為int類型

寫入時(shí)有以下方法:

void write(int b) //將b的低八位寫入

void writeChars(String s) //將字符串s所代表的字節(jié)寫入

void write(byte[] b) //將字節(jié)數(shù)組b寫入

void writeInt(int i) //寫入4個(gè)字節(jié)的i

除了讀取寫入的方法外,setLength(long newLength)方法可以設(shè)置文件的大小,如果newLength小于當(dāng)前文件大小,那么文件將會(huì)被截肢,反之,文件將會(huì)被擴(kuò)大到newLength。

FileDescriptor

值得注意的是,RandomAccessFile提供了一個(gè)FileDescriptor getFD()方法獲取文件所對(duì)應(yīng)的文件描述符對(duì)象,文件描述符代表是一種平臺(tái)獨(dú)立的文件描述結(jié)構(gòu),通過(guò)這個(gè)描述符可以對(duì)文件進(jìn)行一些特殊的操作。

FileDescriptor定義了sync()方法,與之前提到的"rwd"和"rwd"一樣,sync方法用來(lái)告訴操作系統(tǒng)將緩沖區(qū)的內(nèi)容全部刷到物理的存儲(chǔ)上。如果沒有指定rwd或者rws模式,那么對(duì)文件的寫入將會(huì)暫時(shí)存儲(chǔ)于操作系統(tǒng)層面的緩沖區(qū)里面,當(dāng)緩沖區(qū)滿時(shí),操作系統(tǒng)才會(huì)將內(nèi)容刷至物理磁盤,通過(guò)sync()方式可以讓操作系統(tǒng)對(duì)每一次寫入操作都同步刷新至物理存儲(chǔ)中,以下為一個(gè)例子:

RandomAccessFile raf = new RandomAccessFile("abc.log", "rw");
//這里的模式不是rwd或者rws
FileDescriptor fd = raf.getFD();
raf.write(...);
// 通過(guò)fd的sync方法,可以讓寫入操作同步地刷新至物理存儲(chǔ)
fd.sync();
raf.close();

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65342.html

相關(guān)文章

  • Java IO (三) 讀取其他進(jìn)程數(shù)據(jù),RandomAccessFile,序列化和反序列化

    摘要:虛擬機(jī)讀取其他進(jìn)程的數(shù)據(jù)對(duì)象的方法可以運(yùn)行平臺(tái)上的其他程序該方法產(chǎn)生一個(gè)對(duì)象對(duì)象代表由該程序啟動(dòng)啟動(dòng)的子進(jìn)程類提供如下三個(gè)方法用于和其子進(jìn)程通信獲取子進(jìn)程的錯(cuò)誤流獲取子進(jìn)程的輸入流獲取子進(jìn)程的輸出流這里的輸入流輸出流容易混淆從程序的角度思考 Java虛擬機(jī)讀取其他進(jìn)程的數(shù)據(jù) Runtime對(duì)象的exec方法可以運(yùn)行平臺(tái)上的其他程序,該方法產(chǎn)生一個(gè)Process對(duì)象,Process對(duì)象...

    zhangfaliang 評(píng)論0 收藏0
  • 怎么用Java從網(wǎng)上下載一個(gè)視頻下來(lái)

    摘要:用的流從網(wǎng)上下載一個(gè)視頻原理就是用對(duì)象與目標(biāo)地址建立一個(gè)鏈接,用流的方式從這個(gè)鏈接上把視頻的二進(jìn)制數(shù)據(jù)讀取下載然后再寫入本地文件。然后循環(huán)依次寫入緩存的大小,直至結(jié)束。 用Java的IO流從網(wǎng)上下載一個(gè)視頻 原理:就是用URL對(duì)象與目標(biāo)地址建立一個(gè)鏈接,用IO流的方式從這個(gè)鏈接上把視頻的二進(jìn)制數(shù)據(jù)讀取下載然后再寫入本地文件。 因?yàn)樾〉鼙容^菜的緣故,不會(huì)下載那些加了密的視頻鏈接,這里我就...

    warmcheng 評(píng)論0 收藏0
  • Java 輸入/輸出 I/O流 RandomAccessFile

    摘要:當(dāng)使用節(jié)點(diǎn)流進(jìn)行輸入輸出時(shí),程序直接連接到實(shí)際的數(shù)據(jù)源,和時(shí)間的輸入輸出節(jié)點(diǎn)連接處理流則用于對(duì)一個(gè)已存在的流進(jìn)行連接或封裝,通過(guò)封裝后的流來(lái)實(shí)現(xiàn)數(shù)據(jù)讀寫功能,處理流也被稱為高級(jí)流。 文件的編碼 文本文件就是字節(jié)序列,可以是任意編碼形式。在中文操作系統(tǒng)上直接創(chuàng)建文本文件,則該文本文件只能識(shí)別ANSI編碼,其他編碼方式會(huì)產(chǎn)生亂碼 package imooc.io; import java...

    Eirunye 評(píng)論0 收藏0
  • Java NIO 之 Channel(通道)

    摘要:通道可以異步讀寫。使用的方法讀取數(shù)據(jù)創(chuàng)建一個(gè)讀數(shù)據(jù)緩沖區(qū)對(duì)象從通道中讀取數(shù)據(jù)使用的方法寫入數(shù)據(jù)創(chuàng)建一個(gè)寫數(shù)據(jù)緩沖區(qū)對(duì)象寫入數(shù)據(jù)關(guān)閉完成使用后,您必須關(guān)閉它。五提供了一種被稱為的新功能,也稱為本地矢量。功能是通道提供的并不是。 歷史回顧: Java NIO 概覽 Java NIO 之 Buffer(緩沖區(qū)) 其他高贊文章: 面試中關(guān)于Redis的問(wèn)題看這篇就夠了 一文輕松搞懂redis集...

    piglei 評(píng)論0 收藏0
  • 關(guān)于JAVA中順序IO的基本操作

    摘要:關(guān)于中順序的基本操作關(guān)于中順序的基本操作寫在前面最近研究一下中的順序,在網(wǎng)絡(luò)上找了一會(huì)兒,發(fā)現(xiàn)少有詳細(xì)的介紹,顧此在此處說(shuō)說(shuō)順序,才學(xué)疏淺,如有不對(duì),望賜教。上述代碼中標(biāo)記位置中,返回下一次操作時(shí)的位置。關(guān)于JAVA中順序IO的基本操作 寫在前面 最近研究一下JAVA中的順序IO,在網(wǎng)絡(luò)上找了一會(huì)兒,發(fā)現(xiàn)少有詳細(xì)的介紹,顧此在此處說(shuō)說(shuō)順序IO,才學(xué)疏淺,如有不對(duì),望賜...

    EscapedDog 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<