[Mūzikas atskaņošanai] ROB BOWDEN: Hi. Es esmu Rob, un pieņemsim ceram, ka šis risinājums palīdz likt jums ceļā uz atveseļošanos. Tātad, pieņemsim sāktu. Mēs redzam, ka tieši mēs esam tikai, lai pārliecinātos, ka mēs esam izmantojot atgūt pareizi. Tā lietošana ir vienkārši kaut kas piemēram, dot slash atgūt. Tagad mēs esam gatavojas atvērt gaidāms card dot neapstrādātu failu. Mēs redzam šeit, ka mēs izmantojam pastāvīga neapstrādāts pasvītrojums faila nosaukumu, kas šeit mums ir hash definēta kā card dot izejvielas. OK. Tāpēc mums ir nepieciešams, lai pārliecinātos, ka tas sekmīgi uzsākta, jo, ja tas nav, tad mums būtu jābrīdina lietotājs. Bet, pieņemot, ka tas bija, mēs esam tagad gatavojas atzīt buferi izmēra JPEG faila nosaukuma garums. Tātad šis būs buferis, ka Mēs ejam, lai sprintf into. Tātad, kas ir JPEG faila nosaukuma garums? Šeit mēs redzam, ka tas ir hash definēta kā astoņi. Tātad, kāpēc astoņi? Nu ņemot vērā, fails tiks nosaukts kaut kā nulle nulle nulle. JPG, un tad mums ir nepieciešams slīpsvītru nulles. Tāpēc mums ir nepieciešams buferis, kas var saglabāt astoņas rakstzīmes. Tagad mēs esam nāksies counter, kas ir gatavojas sekot numurs JPEG mēs atradām. Un visbeidzot, mēs esam nāksies JPEG failu, kas sākotnēji null kas būs pašlaik atvērt failu, ka mēs esam rakstiski. Tagad mēs esam nāksies papildus buferis. Tas ir tas pats kā mūsu sprintf buferis, ja tas buferis ir viens ka mēs lasāt datos No karti dot izejvielas. Tāpēc buferis būs par neparakstīts simboli, ko jūs varat būtībā tikai pret mums baiti, un tas ir būs no izmēra bloka izmērs kur, kā mēs jums pastāstīt, bloka izmērs ir 512. Tātad, JPEG jūs varat ārstēt visu kā blokiem 512 baitu. Tagad mēs ejam uz cilpas visā failā. Mēs ejam, lai f lasīt mūsu bufera vienu baitu bloka izmērs reizes no card dot neapstrādātu failu. Tagad Kāda f lasīt atgriezties? Tā atgriež vienību skaitu ka tā veiksmīgi lasīt. Tātad, ja tas ir izdevies izlasīt 512 baiti, tad Mēs gribam, lai redzētu, vai tas bija JPEG vai rakstīt to JPEG failā. Un, ja tas neatgriezās 512 baiti, Tad nu fails ir beidzies un tādā gadījumā mēs izkļūt no y cilpa, vai ir daži no kļūdas veida tādā gadījumā mēs arī izkļūt no y cilpa, bet mēs gribam, lai ziņotu ka kaut kas nogāja greizi. OK. Tātad, pieņemot, ka mēs veiksmīgi nolasīt 512 baiti, mēs vēlamies, lai pirmo pārbaudi lai šie baiti, ka mēs tikai lasīt sākt JPEG. Tātad, ja ir JPEG header mūsu bufera. Tagad Kas tas ir JPEG header dara? Apskatīsim. Šeit mēs redzam, ka šī funkcija ir atgriežoties bullis, un ka bullis - arī šeit, mēs esam pārbaudi, lai noskaidrotu, vai header nulles vienāds ar šo konstanti un header viens ir vienāds ar šo konstanti un header divi ir šo konstanti, header trīs vienāds ar to vai šo nemainīgs, ja visi šie konstantes ir tikai hash noteikts tieši šeit, un ir tieši tas, ko mēs teicām jums spec ka JPEG sākas ar. Un tāpēc šī funkcija ir tikai gatavojas atgriezties true, ja tas buferis ir sākums jaunai JPEG un viltus citādi. OK. Tātad, ja tas nav veido jaunu JPEG, tad mēs vispirms vēlamies pārbaudīt, lai redzētu, vai JPEG fails nav vienāds ar nulli, un tādā gadījumā mēs to aizvērtu. Un tad kāpēc mums ir nepieciešams, lai pārbaudītu lai redzētu, vai tas nav null? Nu pats pirmais JPEG, ka mēs atrast mums jau nav atvērt JPEG failu. Un tā, ja mēs cenšamies slēgt, ka pēc tam mēs nedarām kaut ko gluži labi. Bet katrs nākamais JPEG ka mēs atveram, mēs vēlamies, lai aizvērtu Iepriekšējais attēls. Tāpēc tagad mēs esam gatavojas izmantot sprintf kā mēs teicu, ja mēs izmantojam bufera JPEG faila nosaukumu. Un mēs esam gatavojas izmantot JPEG failu nosaukt formātā kā mūsu formātā. Un kas tas ir? Šeit mēs redzam, ka tas ir procenti nulle 3D.JPEG kur nulles trīs tikko saka, ka mēs izmantosim trīs skaitļu par to polsterētām ar nullēm. Tātad, tas ir, kā mēs iegūtu nulle nulle one.JPEG un nulle 10.JPEG un tā tālāk. Mēs ejam, lai izmantotu sprintf. Un skaitlis, ko mēs esam ievietojot vērā virkne ir sastindzis JPEG atgūti, kas sākotnēji nulli. Tātad pirmais datne būs ir nulle nulle nulle dot JPEG. Un tad mēs esam palielināšanai tā, lai Nākamais attēls mēs atveram būs nulle nulle viens dot JPEG un mēs pieauguma to atkal tā tas būs nulle nulle divi dot JPEG un tā tālāk. Labi. Tāpēc tagad iekšpusē JPEG failu nosaukums, mēs esam nosaukumu fails, ko mēs gribam. Mēs varam f atvērt šo failu rakstīšanai. OK. Un atkal, mums ir nepieciešams pārbaudīt, lai padarītu pārliecināts, ka fails veiksmīgi atvērts, jo, ja tā nav, tad tur bija dažas kļūdas. Tāpēc tagad mēs esam gotten pagātnē tas JPEG daļa. Un šeit mēs redzam, mēs ejam rakstīt uz JPEG. Bet mums vispirms ir šo pārbaudi, kas saka ja JPEG failā nav vienāda null. Kāpēc mums ir nepieciešams, ka? Nu JPEG failu vienāda null kad mēs pašlaik ir atvērts JPEG. Ko darīt, ja karte dot izejvielas sākas ar ķekars baitu, kas nerada JPEG? Tad mēs esam gatavojas vēlaties izlaist pār šo baitu. Ja mums nav šo pārbaudi, tad mēs esam gatavojas rakstīt neatvērts failu pirmos 512 baitu karte, kas nav labi. OK. Tātad pieņemot, ka mums ir atvērt failu, tad mēs esam gatavojas rakstīt šo failu 512 baiti, kas mums ir mūsu buferis. Un mēs atkal pārbaudes, lai pārliecināts, ka 512 baiti veiksmīgi bija rakstīts, jo, ja tie nav veiksmīgi rakstīts, tad kaut nogāja greizi. Mēs aizvērt mūsu failus, drukāt, ka kaut kas nogāja greizi, un atgriešanās. Pieņemot, ka viss iet pareizi, tad mēs turpinām looping slēgšanu vecais fails, atverot jaunu failu, rakstot datus uz jaunu failu, un tā gada līdz beidzot tas f lasīt atgriež nulli, kas nozīmē ka fails tiek darīts. Tāpēc tagad, ka karšu lasīšanas ir beidzies, mēs redzēt, ka mēs ejam, lai f slēgt pēdējā faila, ka mums bija atvērts, bet mēs pārbaudīt, ja JPEG fails nav vienāds null. Nu f tuvu jēga, jo, mēs atvērt failus, mēs slēdzot Iepriekšējais attēls, bet ļoti pēdējā failu, ka mēs atvērām nekad izpaužas slēgts. Tātad tas, ko tas dara. Bet kāpēc mums ir nepieciešams, lai pārbaudītu null? Nu ko, ja karte dot jēlas nebija ir viens JPEG iekšpusē no tā? Tādā gadījumā mums būtu nekad nav atvēris failu. Un, ja mēs nekad atvērt failu, mums vajadzētu nav mēģināt slēgt šo failu. Tātad tas, ko šī pārbaude dara. Tagad šeit, kā es teicu iepriekš, mēs varētu ir izcēlies, ka y cilpu nu ja karte ir beigusies, vai, ja ir dažas kļūdas lasot no kartes. Tātad šis ir pārbaudīt, lai redzētu, vai tur bija lasīšanas kļūda no kartes, kas tādā gadījumā, mēs sakām, ka bija kļūda lasījumā. Mēs nevēlamies, lai lietotājs varētu domāt viss gāja veiksmīgi. Un mēs atgrieztos viena kļūda. Visbeidzot, mēs f slēgt mūsu neapstrādātu failu, Mūsu card dot izejvielas, lai norādītu, ka viss gāja labi, un atgriešanās nulle, un tas arī viss. Mans vārds ir Rob, un tas bija atgūt. [Mūzikas atskaņošanai]