[Muusika mängib] ROB BOWDEN: Hi. Olen Rob ja loodame, et see lahendus aitab sind on taastumiseks. Niisiis alustame. Me näeme, et kohe oleme lihtsalt veendumaks, et me oleme kasutades taastada õigesti. Nii kasutamine peaks lihtsalt olema midagi nagu dot kaldkriipsuga taastuda. Nüüd me ei kavatse avada oodata kaart dot raw faili. Me näeme siin, et me kasutame pidev toores alakriips faili nimi mis siin üleval on meil hash defineeritud kaart dot toores. OK. Seega peame tagama, et see edukalt avanud, sest kui see ei, siis me peaks hoiatama kasutaja. Kuid kui eeldada, et ta seda tegi, me oleme nüüd kavatse kuulutada puhvri suurus JPEG failinimi pikkus. Nii et see saab olema puhver, mis me sprintf arvesse. Mis on JPEG faili nimi pikkus? Siin me näeme, et see on hash määratletakse kaheksa. Miks kaheksa? Noh antud faili nimeks saab midagi nagu null null null. JPG ja siis peame längkriipsu null. Seega peame puhver, mis võivad salvestada kaheksa märki. Nüüd lähed on counter, mis on kavatse jälgida number JPEG leidsime. Ja lõpuks, me ei kavatse olla JPEG-fail, mis on esialgu null mis saab olema praegu avatud faili, et me kirjutame. Nüüd lähed on täiendavat puhvrit. See ei ole sama kui meie sprintf puhverdada, kui see on puhver ühe et me loed andmed Kaardilt dot toores. Nii puhvrit saab olema allkirjastamata tähemärki, mida saab põhimõtteliselt ainult kohtlevad meid baiti, ja see on saab olema suurus ploki suurus kus, nagu me ütleme teile, ploki suurus on 512. Nii JPEG saab ravida kõik kui klotsid 512 baiti. Nüüd me loop kogu faili. Me f lugeda meie puhver ühe baidi blokisuurus korda kaart dot raw faili. Nüüd, mida ei f lugeda tagasi? See tagastab arvu punkte et see edukalt lugeda. Nii et kui ta suutis lugeda 512 baiti, siis Me tahame näha, kas see oli JPEG või kirjutada seda JPEG faili. Ja kui ta ei tagastanud 512 baiti siis kas fail on lõppenud mille puhul me välja murda y loop, või on mingi viga mille puhul me ka välja murda y silmus, kuid me tahame aru et midagi läks valesti. OK. Seega eeldades, et me edukalt lugeda aastal 512 baiti, tahame kõigepealt check teha, et need baidid, et me lihtsalt lugeda alustada JPEG. Nii et kui on JPEG päises meie puhver. Nüüd sellest, mis on JPEG header teed? Vaatame. Siin me näeme, et see funktsioon on tagastamise pulli ja härja - ka siin, me kontrollime, kas header null võrdub see pidev ja header üks võrdub see pidev ja header kaks võrdub see pidev, header kolm võrdub see või see pidev kus kõik need konstandid on lihtsalt hash defineeritud siin ja on täpselt, mida me teile rääkinud spec et JPEG algab. Ja nii see funktsioon on ainult kavatse tagasi true kui puhver on algab uus JPEG ja vale teisiti. OK. Niisiis, kui see on uus JPEG, siis kõigepealt on ju vaadata, kui JPEG-faili ei ole võrdne null, mille puhul me sulgeda. Ja miks me vajame, et kontrollida et näha, kas see ei ole null? Noh kõige esimene JPEG et me leia me veel ei ole avatud JPEG faili. Ja nii, kui me püüame sulgeda, et siis me ei tee midagi päris õige. Kuid iga järgnev JPEG et avame me tahame sulgeda Eelmise faili. Nüüd me ei kavatse kasutada sprintf kui me ütles enne, kui me kasutame puhver JPEG faili nimi. Ja me ei kavatse kasutada JPEG fail nimekuju meie formaat. Ja mis see on? Siin me näeme, et see on protsent null 3D.JPEG kui null kolm lihtsalt ütleb, et me kasutame kolm täisarvu Selle polsterdatud nullidega. Nii et see on see, kuidas me saame null null one.JPEG ja null 10.JPEG ja nii edasi. Me ei kavatse kasutada sprintf. Ja täisarv, et me lisades arvesse string on tuim JPEG taaskasutatakse, mis on algselt null. Nii esimese faili avada saab null null null dot JPEG. Ja siis me incrementing see nii järgmist pilti avame null null üks dot JPEG ja me juurdekasvu see jälle nii, et see saab olema null null kaks dot JPEG ja nii edasi. Hea küll. Nüüd sees JPEG fail Nime, meil on nimi fail, mida me tahame. Saame f avada seda faili kirjutamiseks. OK. Ja veelkord, peame kontrollima, et Veenduge, et fail on edukalt avatud, sest kui see ei ole, siis seal oli viga. Nüüd oleme saanud varem see JPEG osa. Ja siin näeme me kirjutada JPEG. Aga kõigepealt on see kontroll, mis ütleb, kui JPEG fail ei võrdu null. Miks meil seda vaja on? Noh JPEG faili võrdub null, kui me Praegu on avatud JPEG. Mis siis, kui kaart dot toores algab kamp bytes et ei kujuta JPEG? Siis me tahame Otse üle need baiti. Kui me ei ole seda vaadata, siis oleme kavatse kirjutada avamata esitama esimese 512 baiti kaart, mis ei ole hea. OK. Seega eeldades, et meil on avatud fail, siis me kirjutada, et fail 512 bytes, et meil on meie puhver. Ja me taas kontroll teha kindel, et 512 baiti edukalt kanti sest kui nad ei olnud edukalt kirjutatud, siis midagi valesti läks. Me sulgeme oma faile printida, et midagi läks valesti, ja tagasi. Eeldades, et kõik läheb õigesti, siis hoiame silmukoiminen sulgemist vana faili, avades uue faili, kirjalikult andmed uue faili, jne edasi, kuni lõpuks see f lugeda tagastab null mille abil et fail on tehtud. Nüüd, et kaardi lugemine on lõppenud, me näha, et me ei kavatse f sulgeda viimane fail, mis meil oli avatud, kuid me kontrollime kui JPEG fail ei võrdu null. Noh f lähedal loogiline, sest kui me avame faili, me sulgeme Eelmise faili, kuid viimasel file et avasime kunagi saab sulgeda. Nii see on, mida see teeb. Aga miks meil on vaja kontrollida null? Noh mis siis, kui kaart dot toores ei on ühtse JPEG sees on? Sellisel juhul oleks meil kunagi avanud faili. Ja kui me ei ava faili, peaksime üritage sulgeda see fail. Nii see on, mida see kontroll teeb. Nüüd, nagu ma enne ütlesin, me võiksime on puhkenud, et y silmus kas kui kaart on lõppenud või kui on mõni viga lugemine kaardiga. Nii et see on kontroll, et näha, kas seal oli viga lugemine kaardi sisse mis juhul me ütleme, et Tekkis viga lugemisel. Me ei soovi, et kasutaja mõtlema kõik läks edukalt. Ja me tagasi üks viga. Lõpuks me f sulgeda raw faili Meie kaardi dot toores, mis näitab, et kõik läks hästi ja tagastamine null ja see on kõik. Minu nimi on Rob ja see oli taastada. [Muusika mängib]