溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java文件格式是什么

發(fā)布時(shí)間:2022-01-06 16:58:52 來源:億速云 閱讀:725 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“java文件格式是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

文件格式的定義

wiki 定義:

A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium.

翻譯一下:

文件格式是將信息進(jìn)行編碼并存儲(chǔ)在計(jì)算機(jī)文件中的標(biāo)準(zhǔn)方式。它指定如何使用字節(jié)來編碼信息,并存儲(chǔ)在數(shù)字存儲(chǔ)媒介中。

人話:

就是告訴你數(shù)據(jù)是怎么存在文件中的。有了文件格式,你就可以將數(shù)據(jù)寫成這種格式的文件,并且將數(shù)據(jù)從這種格式的文件中讀出來。文件格式的本質(zhì)就是一種協(xié)議。

舉個(gè)例子,word、excel、PPT 就是文件格式,他們按照自己的格式進(jìn)行組織,計(jì)算機(jī)中不同的文件后綴就代表不同格式的文件,同樣格式的文件的內(nèi)容可以不同。

開發(fā)一種文件格式,一般都需要開發(fā)讀寫接口。最簡(jiǎn)單的寫接口是將一個(gè)數(shù)據(jù)寫入到文件中,最簡(jiǎn)單的讀接口就是把里邊的所有數(shù)據(jù)全部讀出來(這里的讀出來,一般需要以用戶可認(rèn)識(shí)的格式讀出來。不能用戶寫了個(gè)a,你讀出來個(gè)#,然后跟用戶說 # 就是 a ,這是耍流氓)。

再舉例子,word 給人提供了一個(gè)界面,讓你可以寫文字。保存關(guān)閉之后再打開。他還能給你展示之前寫入的內(nèi)容,這就是讀文件。

文件格式一般包含兩部分:data 和 metadata。data 即數(shù)據(jù);metadata 即元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù)),比如這個(gè)文件中一共有幾條數(shù)據(jù),數(shù)據(jù)的起始位置是多少,長(zhǎng)度是多少。

下面介紹一個(gè)自己的文件格式:

實(shí)現(xiàn)自己的文件格式!

這個(gè)文件格式的功能為:寫 int 數(shù)據(jù);讀取所有數(shù)據(jù)。

文件結(jié)構(gòu)如下圖:因?yàn)槲募诖疟P上是一維結(jié)構(gòu),因此文件格式就直接畫成一條線了,這個(gè)文件格式中,前邊是數(shù)據(jù),最后是元數(shù)據(jù)。當(dāng)然你也可以設(shè)計(jì)成其他樣子,比如元數(shù)據(jù)和數(shù)據(jù)交叉存放。這里只介紹一個(gè)比較簡(jiǎn)單的。

java文件格式是什么

原料如下:寫流程用到了 ByteArrayOutputStream 和 FileOutputStream。 讀流程用到了 RandomAccessFile。這里的 metadata 就是一個(gè) int 類型的 count,記錄文件中數(shù)據(jù)的個(gè)數(shù)。isWrite 用來判斷此實(shí)例是讀流程還是寫流程。一般文件格式都是先寫,關(guān)閉之后再另起線程進(jìn)行讀取。

java文件格式是什么

兩個(gè)小工具,用來將 int 和 bytes 間的轉(zhuǎn)換

java文件格式是什么

寫入方法:將數(shù)據(jù)緩存進(jìn) baos,計(jì)數(shù)+1。這時(shí)候只把數(shù)據(jù)的字節(jié)數(shù)組放在了內(nèi)存中,還沒有真正往文件里寫數(shù)據(jù)。

java文件格式是什么

close 方法:先將 metadata (count)寫入 baos 末尾,然后將 baos 中的所有bytes 寫入文件。最后關(guān)閉文件。

java文件格式是什么

讀方法:先讀文件末尾的 metadata,再讀數(shù)據(jù)。上邊我們說了,metadata 一般包括了數(shù)據(jù)的個(gè)數(shù),所在位置,長(zhǎng)度。但是這里的 metadata 只有一個(gè)數(shù)據(jù)的個(gè)數(shù)。這是不是有問題了?沒問題,因?yàn)槲覀兊臄?shù)據(jù)都是 int,占 4 個(gè)字節(jié),所以數(shù)據(jù)整體長(zhǎng)度就有了。并且我們的數(shù)據(jù)是從 文件開頭開始寫的,因此所在位置也是預(yù)先知道的。 這就是文件格式,怎么寫的怎么讀。

java文件格式是什么

另一個(gè)方面也不能忽略,那就是 metadata 其實(shí)也是一種數(shù)據(jù),那么 metadata 我們是怎么讀的呢?其實(shí) metadata 也需要自己的 metadata,這樣就無窮無盡無止境了,metadta 還有 metadata。。。但是,是有止境的,一般那個(gè)終止點(diǎn)再文件的開頭或結(jié)尾,存儲(chǔ)了一個(gè)位置相鄰的 metadata 的長(zhǎng)度。這樣,就找到了第一個(gè)metadata。之后的就可以一連串找出來了。比如在這個(gè)例子中,這個(gè)終止點(diǎn)是一個(gè) int,存在文件的末尾,占 4 個(gè)字節(jié)。

主方法:先起一個(gè)實(shí)例寫文件,再起一個(gè)實(shí)例讀文件。每次用完實(shí)例后需要關(guān)閉。

java文件格式是什么

運(yùn)行結(jié)果:所有數(shù)據(jù)被讀出來了

java文件格式是什么

“java文件格式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI