簡體   English   中英

如何在不將其完全加載到Cocoa中的情況下訪問二進制文件數據?

[英]How can I access binary file data without loading it entirely in Cocoa?

我在可可中編寫了一個小工具來計算文件的MD5,SHA-1和其他哈希函數。 如果正確理解,至少可以通過以下方式實現MD5算法:我只需要同時加載文件的一小部分-這似乎是個好主意,因為我不想占用全部用戶的RAM,然后再使用一些RAM僅用於計算10 Gb存檔的哈希值。

如何使用可可粉實現此目的?

NSData可以對文件進行內存映射,以便基礎OS(Mac OS或iOS)虛擬內存系統根據需要自動在文件的各個部分中分頁。 NSData構造函數之一與以下options:一起使用options:參數和NSDataReadingMappedIfSafeNSDataReadingMappedAlways選項。

要做到這一點而又不對文件進行內存映射(這可能很麻煩),您可以使用NSFileHandle並使用-readDataOfLength:讀取任意大小的數據塊。

您在可可中有三種選擇:

  • 內存映射的NSData
  • NSStream
  • NSFileHandle

我有開放源代碼顯示可以在此處使用流的代碼: https : //github.com/karelia/KSCrypto/blob/master/KSSHA1Stream.h

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM