arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?
IPFS或星際文件系統是一種點對點(P2P)網絡協議,用于共享分布式Web上的數據。顧名思義,您可以將IPFS視為文件系統,它具有一些獨特的特性,使其成為安全,分散式共享的理想選擇。
在這里您可以了解所有有關去中心化網絡以及如何與您習慣的網絡進行比較的信息。在這里,您將學到有關內容尋址,加密哈希,內容標識符(CID)以及與對等方共享的所有知識,以充分利用本教程有關IPFS的所有知識。
在IPFS中存儲和共享數據
將內容添加到IPFS網絡后,它會存放在哪里?
作為對等數據存儲系統,IPFS允許每個用戶(對等)在本地托管他們想要的任何數據。首次向IPFS添加新內容時,實際上只是在您自己的計算機上以適合于通過IPFS協議共享的格式對其進行設置。通常,您會在自己的計算機上安裝IPFS,然后在該計算機上創建IPFS的新實例(也稱為節點)。這就是您的數據在本地存儲的地方,由內容地址(CID)引用。IPFS中存儲的數據可以采用多種形式,但是最常見的用例之一是傳統文件的共享,我們將在本教程中詳細了解。
您可以選擇在建立網絡連接后與對等方共享數據或文件,但是如果您是唯一托管特定資源的人,則當您的計算機脫機時,對等方將無法使用它。使多個同位體托管相同的文件可以使它們更容易使用,而使用CID(通過加密哈希算法創建的唯一內容標識符)則可以確保該系統的安全。在以后的教程中,我們將討論更多有關共享的內容,但現在,我們將重點介紹如何在自己的IPFS實例中使用文件。
可變文件系統
由于IPFS中的文件是內容尋址的并且是不可變的,因此您無法編輯文件。相反,每次更改都會創建一個新文件。該可變的文件系統(MFS)是內置到IPFS一個工具,可以讓你把文件,就像你通常會在一個基于名稱的文件系統-你可以添加,刪除,移動和編輯MFS文件,并有更新鏈接的一切工作,哈希為您照顧。它是一種抽象,可讓您像處理可變數據一樣處理它們。
通過Files IPFS CLI(命令行界面)和API中的命令訪問MFS 。在本教程中,我們將探索Files API。
如果您以前從命令行使用過文件和目錄,那么許多MFS方法將看起來非常熟悉!
讓我們開始探索如何在IPFS中處理文件!
01
檢查目錄狀態
在我們的ProtoSchool教程中,每次您單擊課程中的“提交”按鈕時,我們都會在瀏覽器中為您創建一個新的IPFS節點。每當您ipfs.someMethod()在我們的課程中看到ipfs該變量時,它都是一個變量,它引用您的IPFS實例,也稱為節點。您執行的操作僅影響您自己的IPFS節點,而不影響屬于對等節點的節點。
我們正在幕后創建IPFS節點,因此您可以專注于本課的內容,但是最終,您需要通過在終端中安裝IPFS和運行守護程序來學習在本地托管自己的節點。準備進行實驗時,可以在我們的文檔中找到有關安裝IPFS和初始化節點的說明。
如前所述,與Mutable File System相關聯的方法是Files API的一部分,因此它們將采用的格式ipfs.files.someMethod()。讓我們看一個甚至可以在將任何文件添加到IPFS節點之前就可以開始使用的簡單方法。
02
探索您的IPFS節點
在使用IPFS節點時,您通常需要檢查文件或目錄的狀態。您可以使用進行此操作ipfs.files.stat,并傳遞您要檢查的路徑。
例如,要檢查stuff位于我們的根目錄(/)中的目錄的狀態,我們可以像這樣調用方法:
await ipfs.files.stat('/stuff')
此方法返回一個對象,其中包含有關文件或目錄的一些基本數據:
cid(CID對象)
大小(一個整數,以字節為單位的文件或目錄大小)
累積大小(一個整數,該整數與組成文件的DAGNodes的大小(以字節為單位))
類型(可以是directory的字符串file)
塊(如果type為directory,則為目錄中的文件數;如果type為file,則為構成文件的塊數)
withLocality(一個布爾值,指示是否存在位置信息)
本地(布爾值,表示所查詢的dag是否在本地完全存在)
sizeLocal(一個整數,指示本地存在的數據的累積大小)
知道了!該size目錄始終是0,不管有多少條目中包含的,因為目錄其實只是一組鏈接到其他文件和目錄。目錄的cumulativeSize,相反,改變為目錄中的內容變化。它不僅代表該目錄中所有條目的文件大小,還代表描述這些條目的元數據:類型,塊大小等。
重要的是要注意,stat即使您還沒有任何IPFS節點,也可以。即使是空節點也具有CID。
03
在ProtoSchool中處理文件
為了安全起見,網絡瀏覽器不允許我們直接更改計算機文件系統中的文件。因此,您需要將一個或多個文件上傳到瀏覽器中,以便在本教程中使用。
在每個挑戰中,您都會看到可以通過拖放或從文件資源管理器中選擇文件來從計算機上載文件。如果仔細查看run代碼編輯器中的函數,您會發現它現在帶有一個參數files。當您從計算機上載文件時,我們將確保將它們作為files數組傳遞到函數中。只要您不刷新瀏覽器,這些文件就可以在本教程的下一課中訪問,但是您還可以選擇上載不同的文件以用于每節課。
為了練習,讓我們從您的計算機上載一個或多個文件,并查看瀏覽器作為files數組接收到的內容。
04
將文件添加到MFS
現在我們有了在瀏覽器中可訪問的文件,讓我們看看如何將它們添加到IPFS。
要將文件添加到IPFS,我們可以使用MFS files.write方法,如下所示:
await ipfs.files.write(path, content, [options])
MFS files.write方法可以接受的文件content在一個形式緩沖器,ReadableStream,PullStream,斑點(僅在瀏覽器中),或串路徑到一個文件(僅在Node.js的)。由于瀏覽器中的文件對象是一種Blob,因此我們很高興!
盡管瀏覽器中的文件對象碰巧知道自己的文件名,但Blob通常并不知道,因此IPFS無法直接確定現有文件名。我們必須在其中提供所需的文件名path。
該path是你在你的IPFS實例中創建,包括所需的文件名的新路徑。(請注意,這是我們正在描述的目標路徑,而不是文件已在您的計算機上駐留的路徑。)
MFS files.write方法,就像您可能在自己的計算機上使用過的類似方法一樣,實際上是為編輯現有文件的內容而構建的。但是,我們還可以通過提供boolean選項{ create: true }來使用它來創建一個全新的文件,以指示如果文件在給定路徑中不存在,則應在該文件中創建該文件。
因此,如果我們在瀏覽器中有一個文件對象,可以通過一個變量訪問catPic它,并且我們想將其添加到IPFS的根目錄中并命名為cat.jpg,我們可以這樣做:
await ipfs.files.write('/cat.jpg', catPic, { create: true })
如果需要,可以使用串聯(字符串的連接)來創建相同的路徑。如果文件名是文件對象的屬性,這將很方便,就像在瀏覽器中一樣。
await ipfs.files.write('/' + catPic.name, catPic, { create: true })
請注意,該files.write方法不提供返回值。
稍后,我們將研究如何將文件添加到根目錄以外的目錄。
05
查看目錄的內容
當我們使用將文件添加到MFS時files.write,該方法沒有返回任何值,但是我們仍然可以進行檢查以確保一切都按預期進行。
在可變文件系統中,我們可以使用files.ls 方法檢查目錄。如果您曾經使用命令行列出計算機上目錄的內容,應該會感到非常熟悉。
該files.ls方法如下所示:
ipfs.files.ls([path], [options])
該方法默認將列出根目錄(/)的內容,或者您可以選擇指定path要檢查的特定目錄(例如)/catPics,
files.ls 產生一個對象數組,該對象數組針對您要檢查的目錄中包含的每個文件或目錄,具有以下屬性:
name:文件名
type:對象的類型(0-文件或1-目錄)
size:文件大小(以字節為單位)
cid:內容標識符(CID),用于在IPFS中標識您的文件
mode:作為數字的UnixFS模式
mtime:具有數字secs和nsecs屬性的對象
如果我們想檢查/catPics 目錄的內容,可以這樣做:
ipfs.files.ls('/catPics')
由于該files.ls方法返回一個Async Iterable,因此只能一個一個地迭代這些值。如果需要返回所有值,則可以將每個值保存到一個數組中,然后返回該數組。
要遍歷所有值,我們可以使用for await...of循環:
const result = []for await (const resultPart of ipfs.files.ls('/catPics')) {
result.push(resultPart)
}return result
為了使事情變得簡單,我們可以使用it-all自動執行此操作的軟件包:
// the all function comes from the it-all package// and is made globally available (just like ipfs) in our code challengesconst result = await all(ipfs.files.ls('/catPics'))
本次內容就到此結束了,如若想要了解更多有關IPFS的內容請關注我們的公眾號,我們將持續更新關于IPFS的內容。
總結
以上是生活随笔為你收集整理的arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是金融安全 是金融经济学研究的基本问
- 下一篇: pb 修改数据窗口种指定字段位置_第三章