[MUSIC Playing] Rob Bowden: Hi. Unë jam Rob, dhe le të shpresojmë se kjo zgjidhje ndihmon ju vë në rrugën e shërimit. Pra, le të ketë filluar. Ne e shohim se menjëherë ne jemi vetëm për të siguruar që ne jemi duke përdorur Recover saktë. Pra, përdorimi duhet të jetë vetëm diçka si dot slash shërohen. Tani ne jemi duke shkuar për të hapur pritur kartë dot skedarin papërpunuara. Ne shohim këtu se ne jemi duke përdorur underscore papërpunuara Emri konstante fotografi, të cilat deri këtu kemi hash përcaktuar si kartë dot para. OK. Pra, ne duhet të sigurohemi që kjo u hap me sukses, sepse në qoftë se ajo nuk ka, atëherë ne duhet të paralajmërojnë përdoruesit. Por duke supozuar se ai e bëri, ne jemi tani do të shpallë një tampon të madhësisë JPEG paraqesë gjatësi emrin. Pra, kjo do të jetë tampon që ne jemi duke shkuar për sprintf në. Pra, çfarë është e JPEG fotografi gjatësi emrin? Deri këtu, ne shohim se kjo është hash përcaktuar si tetë. Pra, pse të tetë? E pra një file i dhënë do të quhet diçka si zero zero zero. JPG dhe pastaj të kemi nevojë për një backslash zero. Pra, ne kemi nevojë për një tampon që mund dyqan tetë karaktere. Tani ne do të kemi një kundër që është e do të mbajnë gjurmët e JPEGs numër kemi gjetur. Dhe në fund, ne do të kemi një JPEG fotografi e cila është fillimisht null cila do të jenë aktualisht fotografi të hapur se ne jemi me shkrim për të. Tani ne do të kemi një tampon shtesë. Kjo nuk është e njëjtë si sprintf tonë tampon ku kjo buffer është ai se ne jemi duke lexuar në të dhënat e nga kartë dot para. Kështu buffer do të jenë të chars të panënshkruara, të cilat ju mund të në thelb vetëm të na trajtojnë bytes, dhe është e do të jetë e madhësisë bllok madhësisë ku, siç thoni ju, Madhësia bllok është 512. Pra JPEGs ju mund trajtoni çdo gjë si blloqe të 512 bytes. Tani ne jemi duke shkuar për lak mbi të gjithë dosjen. Ne jemi duke shkuar për f lexuar në tampon tonë një të vetme herë madhësia bllok byte nga kartë dot skedarin papërpunuara. Tani ajo ka f lexuar kthehet? Ajo kthen numrin e artikujve se ai lexuar me sukses. Pra, në qoftë se ajo arriti të lexuar 512 bytes, atëherë ne duam të shohim nëse kjo ishte një JPEG ose shkruani atë në një skedar JPEG. Dhe në qoftë se ajo nuk u kthye 512 bytes, pastaj ose fotografi e ka përfunduar në këtë rast ne do të thyer nga y loop, ose ka një lloj të gabimit rast në të cilin ne gjithashtu do të thyer nga y lak, por ne do të duan për të raportuar se diçka shkoi keq. OK. Pra, duke supozuar që ne me sukses të lexuar në 512 bytes, ne duam të kontrolloni të parë për të bërë që këto bytes se ne vetëm lexuar në të fillojë një JPEG. Pra, nëse është JPEG kokë të tampon tonë. Tani çfarë ajo është duke JPEG header duke bërë? Le të shikojmë. Deri këtu, shohim se ky funksion është kthyer një dem, dhe se dem - edhe këtu, ne jemi duke kontrolluar për të parë nëse header zero është e barabartë me këtë konstante dhe header një është e barabartë në këtë konstante dhe header dy është e barabartë në këtë konstante, header tre është e barabartë me këtë apo këtë vazhdueshme ku të gjitha këto janë konstantet vetëm të hash definuar këtu dhe janë pikërisht ajo që ne i tha ju në spekulim se një JPEG fillon me. Dhe kështu ky funksion është vetëm do të kthim i vërtetë nëse kjo tampon paraqet fillimi i një JPEG të ri dhe false ndryshe. OK. Pra, nëse kjo paraqet një JPEG të re, atëherë ne së pari të dëshironi të shikoni për të parë nëse JPEG fotografi nuk është e barabartë me null, rast në të cilin ne e mbyllur atë. Dhe kështu që pse nuk kemi nevojë për të kontrolluar për të parë nëse kjo nuk është null? Well JPEG e parë që ne të të gjeni ne nuk do të keni një skedar të hapur JPEG. Dhe kështu, në qoftë se ne të përpiqemi për të mbyllur atë, atëherë ne nuk jemi duke bërë diçka mjaft e drejtë. Por çdo JPEG pasuese që ne hapur, ne duam të mbyllur fotografinë paraardhëse. Deri tani ne jemi duke shkuar për të përdorur sprintf si ne thënë më parë ku ne jemi duke përdorur Emri tampon JPEG fotografi. Dhe ne jemi duke shkuar për të përdorur skedarë JPEG format të përmendur si format tonë. Dhe çfarë është ajo? Deri këtu, ne e shohim se ajo është zero për qind 3D.JPEG ku tre zero vetëm thotë se ne do të përdorim tre numra të plotë për këtë i mbushur me zero. Pra, kjo është se si ne do të merrni zero zero one.JPEG dhe zero 10.JPEG dhe kështu me radhë. Ne jemi duke shkuar për të përdorur sprintf. Dhe numër i plotë që ne jemi futur në string është JPEGs mpirë shëruar, cili është fillimisht zero. Pra dosja e parë u hap po shkon të jetë zero zero zero dot JPEG. Dhe atëherë ne jemi duke e rrisim atë në mënyrë fotografinë pasardhësenext ne të hapur do të jetë zero zero një dot JPEG dhe ne do rritje atë përsëri kështu që ajo do të jetë zero zero dy dot JPEG dhe kështu me radhë. Dakord. Deri tani brenda JPEG dosjes emrin, ne kemi emrin e paraqesë që ne duam. Ne mund të f të hapur këtë dosje për të shkruar. OK. Dhe edhe një herë, ne kemi nevojë për të kontrolluar për të i sigurt se dosja me sukses hapur që në qoftë se ajo nuk e bëri, atëherë ka pasur disa gabim. Deri tani ne kemi marrë kaluara është kjo një pjesë JPEG. Dhe këtu, ne e shohim ne do për të shkruar në JPEG. Por ne së pari kemi këtë kontroll e cila thotë nëse JPEG fotografi nuk ka null barabartë. Pse kemi nevojë për këtë? E pra JPEG fotografi është e barabartë null kur ne aktualisht kanë një JPEG hapur. Çfarë ndodh nëse fillon kartë dot para me një bandë e bytes që nuk paraqesin JPEG? Pastaj ne do të duan të kaloni mbi ato bytes. Nëse ne nuk e kemi këtë kontroll, atëherë ne jemi duke shkuar për të shkruar për të një e pahapur të ruajnë të 512 bytes e para të kartë e cila nuk është e mirë. OK. Pra, duke supozuar ne kemi një file të hapur, atëherë ne jemi duke shkuar për të shkruar për këtë dosje 512 bytes se ne kemi në tampon tonë. Dhe ne jemi edhe një herë duke kontrolluar për të bërë i sigurt se 512 bytes sukses janë shkruar, sepse në qoftë se ata nuk ishin të shkruar me sukses, atëherë diçka shkoi keq. Ne do të mbyllë dosjet tona, të shtypura që diçka shkoi keq, dhe të kthimit. Duke supozuar çdo gjë shkon si duhet, atëherë ne do të vazhdojmë looping mbylljes fotografi e vjetër, duke hapur skedar të ri, shkrim të dhënat në dosjen e ri, dhe kështu për deri sa më në fund, kjo f lexoni kthehet zero cilat mjete se dosja është bërë. Pra, tani që leximi kartë është e gjatë, ne shih se ne do të f mbyllur fotografi e fundit që kemi pasur të hapur, por ne jemi duke kontrolluar nëse JPEG fotografi bën null jo të barabartë. Well f ngushtë ka kuptim, sepse si ne jemi duke hapjes së dosjeve, ne jemi duke mbyllur fotografinë paraardhëse, por shumë e fundit fotografi që u hap ne kurrë nuk merr mbyllur. Pra, kjo është ajo që kjo është duke bërë. Por pse ne kemi nevojë për të kontrolluar për null? E pra çfarë nëse karta dot të para nuk ka kanë një JPEG të vetëm në brendësi të saj? Në këtë rast, ne do të kemi kurrë nuk u hap një fotografi. Dhe në qoftë se ne nuk të hapur një skedar, ne duhet nuk përpiqet për të mbyllur këtë dosje. Pra, kjo është ajo që është duke e bërë këtë kontroll. Tani këtu, siç kam thënë më parë, ne mund të kanë shpërthyer se y lak ose nëse kartë ka përfunduar, ose në qoftë se ka disa gabim leximi nga karta. Pra, kjo është e kontrolluar për të parë nëse ka pasur një gabim leximi nga karta, në këtë rast, ne do të thonë se nuk ishte një lexim gabim. Ne nuk duam përdoruesin të mendojnë gjithçka shkoi me sukses. Dhe ne do të kthehemi një të tillë për gabim. Së fundi, ne do të f mbyllur dosjen tonë të papërpunuara, kartë tonë dot para, për të treguar se çdo gjë shkoi mirë dhe kthimi zero dhe kjo është ajo. Emri im është Rob dhe kjo ishte shërohen. [MUSIC Playing]