>> [音樂播放]
>> ROB BOWDEN：你好。
我搶，讓我們希望， 該解決方案可以幫助把你
在復甦的道路。
所以，讓我們開始吧。
>> 我們看到，馬上我們 只是為了確保我們
使用正確恢復。
因此，使用應該只是一些 像點斜線恢復。
>> 現在，我們要打開的預期 卡點的原始文件。
我們在這裡看到，我們使用了 恆生下劃線的文件名，
而在這裡，我們有哈希 定義為卡點原料。
確定。
>> 因此，我們需要確保該 成功打開，因為如果它
沒有，那麼我們就應該向用戶發出警告。
但假設它確實，我們現在是 要申報大小的JPEG緩衝
文件名的長度。
因此，這將是該緩衝區 我們要的sprintf成。
>> 那麼，什麼是JPEG文件名長度？
在這裡，我們看到它的 哈希定義為八人。
那麼，為什麼8？
以及一個給定的文件將被命名為 像零零零。
JPG格式，然後我們需要一個反斜杠零。
所以我們需要一個緩衝，可 存放八個字符。
現在，我們將有一個計數器，該計數器的 要跟踪的
我們發現數量JPEG文件。
>> 最後，我們將有一個 JPEG文件，該文件最初是空
這將是當前 我們正在寫打開的文件。
現在，我們將有 一個額外的緩衝區。
這是不一樣的我們的sprintf 緩衝區，這個緩衝區是一個
我們正在閱讀中的數據 從卡點生。
>> 因此緩衝區將是的 無符號的字符，你可以
基本上只是把我們的字節，它的 將是大小的塊大小
在那裡，我們告訴你， 塊的大小為512。
所以，JPEG文件，你可以把一切 為512字節的塊。
>> 現在，我們要循環 在整個文件。
我們打算到f讀入我們的緩衝區 從單個字節的塊大小倍
卡點的原始文件。
現在是什麼f讀入返回？
它返回的項目數 它成功地讀取。
所以，如果它成功地讀取512字節，則 我們要看到這是否是一個
JPEG或寫入到一個JPEG文件。
如果它沒有返回512個字節， 那麼無論是文件已結束
這種情況下，我們將打破在y的 循環，或有某種錯誤
在這種情況下，我們還會打出來的 在y循環，但我們會想報告
出事了。
>> 確定。
因此，假如我們成功地讀取 在512個字節，我們要首先檢查
使這些字節我們 剛讀開始在一個JPEG。
所以，如果是我們的緩衝區的JPEG頭。
現在，它是什麼JPEG頭在做什麼？
讓我們來看看。
>> 在這裡，我們看到，這個函數是 返回一個牛市，而牛市 -
還有這裡，我們正在檢查，看是否 頭零等於這個常數和
頭一等於這個常數和 包頭二等於這個常數，
頭3等於這個或這 不變，所有這些常數是
只是湊在這裡定義的， 正是我們告訴你，在規範中
即一個JPEG開始。
所以這個功能只是將 返回true，如果此緩衝區代表
一個新的JPEG開始 否則為false。
>> 確定。
因此，如果這確實代表了一種新的JPEG， 那麼我們首先要檢查，看是否
JPEG文件不等於空， 在這種情況下，我們關閉它。
所以為什麼我們需要檢查 來看看它是否不為空？
好極第一張JPEG我們 找到我們不會已經有
一個開放的JPEG文件。
所以，如果我們嘗試關閉，然後 我們不是在做一些很正確。
>> 但以後每JPEG格式的 我們打開，我們要關閉
以前的文件。
所以，現在我們將用sprintf我們 在這裡我們使用的是之前所說的
緩衝JPEG文件名。
而我們將要使用的JPEG文件 名稱格式為我們的格式。
那是什麼？
在這裡，我們看到它是百分之零 3D.JPEG其中零叁只
說，我們將使用三個整數 這個用零填充。
因此，這是我們如何會得到零零 one.JPEG和零10.JPEG等。
>> 我們將用sprintf。
和整數，我們要插入 成字符串是麻木的JPEG
回收的，這是最初為零。
因此，第一個文件打開是怎麼回事 是零零零點JPEG格式。
然後我們遞增它使 我們打開下一個文件將是零零
一個點的JPEG，我們會增加它 再這樣它會是零零2點
JPEG等。
>> 好的。
所以現在的JPEG文件的內部 名，我們有的名字
文件是我們想要的。
我們可以在F打開該文件進行寫操作。
確定。
再次，我們需要檢查，以 確保成功的文件
如果沒有，那麼既然開 有一些錯誤。
>> 所以，現在我們已經得到了過去 這是一個JPEG的一部分。
在這裡，我們看到了我們要去 寫入到JPEG。
但是，我們首先有這樣的支票，說： 如果JPEG文件不等於空。
我們為什麼需要呢？
以及JPEG文件等於null，當我們 目前有一個開放的JPEG格式。
>> 如果卡點開始生什麼 有一堆字節的
並不代表一個JPEG？
然後我們將要 跳過那些字節。
如果我們沒有這個檢查，然後我們 要寫入一個未開封
文件的第512字節 這是不好的卡。
確定。
>> 因此，假如我們有一個打開的文件，然後 我們將寫入該文件中的
512字節，我們已經在我們的緩衝區。
而且我們再一次檢查，以 確保成功的512個字節
寫，因為如果他們不 成功寫入，然後東西
出了錯。
我們將關閉我們的文件，打印 出事了，並返回。
假設一切順利正常，則 我們將繼續循環關閉
舊文件，打開新文件，寫入 數據到新的文件，所以
直到最後，這架F閱讀 返回零這意味著
該文件被完成。
>> 所以，現在的讀卡結束了，我們 看到我們要去F關閉
我們有開放的，但最後的文件 我們正在檢查，如果JPEG文件
不等於空。
以及在F接近有道理的，因為如 我們要打開的文件，我們關閉
以前的文件，但最後 我們打開的文件永遠不會被關閉。
所以，這就是這個在做什麼。
>> 但是，為什麼我們需要檢查是否為null？
好吧，如果卡點生沒 有它在一個單一的JPEG？
在此情況下，我們將有 從未打開過的文件。
如果我們從來沒有打開一個文件，我們應該 不要試圖關閉該文件。
所以，這就是這項檢查在做什麼。
>> 現在在這裡，正如我以前說過，我們可以 已經打破了，Ÿ循環或者如果
該卡已經結束或者有 一些錯誤從卡讀取。
因此，這是檢查，看看是否有 錯誤從記憶卡讀取，在
這種情況下，我們會說有 是一個錯誤的讀數。
我們不希望用戶去思考 一切順利去了。
我們會返回一個用於錯誤。
>> 最後，我們將f關閉我們的原始文件， 我們的卡點原料，以表明
一切都很順利，並回報 零，僅此而已。
>> 我的名字是羅布，這是恢復。
>> [音樂播放]