2012-04-04 54 views
0

某一段代碼是這樣工作的:從文件創建的NSData在塊讀它

  1. 從盤讀取一個文件並將其存儲爲NSData的在存儲器
  2. 加密(解密)它從而導致相同大小的額外NSData對象在存儲器
  3. 寫入加密(解密)數據到磁盤現在

,對於像大小爲10或100 MB的文件,這工作得很好,並保持一個一致的大鼠e每秒處理字節數(因此處理一個100 MB的文件將需要10 MB的10 MB)。如果我說1.5個演出,那麼系統必須將其中2個保存在內存中,以便它開始交換到磁盤,並且速度顯着降低。

所以我想,也許以下是可能的:

  1. 看文件,並將其分成100MB的塊(例如)
  2. 讀一大塊
  3. 加密(解密),它
  4. 將加密塊添加到輸出文件
  5. 丟棄原始塊,以便整個過程最多需要200MB的RAM

我的問題是:

  1. 這可能嗎?
  2. 如果是這樣,那是最好的方法嗎?
  3. 如果是這樣,我將如何去實施它?
+0

你需要說明你遇到了什麼問題? – 2012-04-04 15:49:46

+0

以文件塊的形式讀取文件,在文件上做些東西並寫回來形成一個新文件。我只是不太熟悉像操縱記憶和東西這樣的低層次的東西,我猜我必須閱讀一些理論 – tux91 2012-04-05 05:45:16

回答

1

你想要做的是完全可能的。您的問題需要回答,這是一個有點冗長,所以我是指你這個網頁:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Streams/Articles/ReadingInputStreams.html

注意的是,在頁面處理文件的例子。您可以根據需要設置一個緩衝區,並根據需要一次讀取儘可能多的字節。你甚至會看到一個適合你的地方,讓你打電話給你的加密程序。

與您共創NSMutableData實例,然後你可以把它用-writeToFile:atomically:-writeToURL:atomically:

試一試寫出到磁盤,並在你的努力最好的祝願。