[音樂播放] 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關閉我們的原始文件, 我們的卡點原料,以表明 一切都很順利,並回報 零,僅此而已。 我的名字是羅布,這是恢復。 [音樂播放]