1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Speel van musiek] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Hi. 4 00:00:14,080 --> 00:00:17,550 Ek is Rob, en laat ons hoop dat help hierdie oplossing het jy 5 00:00:17,550 --> 00:00:19,600 op die pad na herstel. 6 00:00:19,600 --> 00:00:22,700 So laat ons begin. 7 00:00:22,700 --> 00:00:25,660 >> Ons sien dat ons dadelik is net om seker te maak dat ons maak 8 00:00:25,660 --> 00:00:27,170 gebruik te maak van herstel korrek. 9 00:00:27,170 --> 00:00:31,490 So het die gebruik moet net iets wees soos dot streep herstel. 10 00:00:31,490 --> 00:00:35,500 >> Nou gaan ons oop te maak die verwagte kaart dot rou lêer. 11 00:00:35,500 --> 00:00:39,740 Ons sien hier dat ons met behulp van die konstante rou underscore lêer naam, 12 00:00:39,740 --> 00:00:44,200 wat tot hier het ons hash gedefinieer as kaart dot rou. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> So ons moet seker maak dat suksesvol oopgemaak, want as dit 15 00:00:48,210 --> 00:00:51,150 het nie, dan moet ons die gebruiker waarsku. 16 00:00:51,150 --> 00:00:56,770 Maar die veronderstelling dat dit gedoen het, het ons nou is gaan 'n buffer grootte JPEG te verklaar 17 00:00:56,770 --> 00:00:58,170 lêernaam lengte. 18 00:00:58,170 --> 00:01:02,060 So dit gaan die buffer te wees dat ons gaan sprintf in. 19 00:01:02,060 --> 00:01:04,360 >> So, wat is JPEG lêer naam lengte? 20 00:01:04,360 --> 00:01:08,490 Hier, sien ons dat dit hash gedefinieer as agt. 21 00:01:08,490 --> 00:01:10,670 So hoekom agt? 22 00:01:10,670 --> 00:01:15,150 Wel 'n gegewe lêer sal genoem word iets soos nul nul nul. 23 00:01:15,150 --> 00:01:19,460 JPG en dan moet ons 'n backslash nul. 24 00:01:19,460 --> 00:01:22,720 So het ons 'n buffer wat kan stoor agt karakters. 25 00:01:22,720 --> 00:01:25,190 Nou gaan ons 'n toonbank wat te hê gaan die spoor van die te hou 26 00:01:25,190 --> 00:01:27,780 aantal JPEG ons gevind. 27 00:01:27,780 --> 00:01:31,590 >> En ten slotte, gaan ons 'n JPEG lêer wat aanvanklik null 28 00:01:31,590 --> 00:01:35,920 wat gaan die oomblik wees open lêer wat ons skryf te. 29 00:01:35,920 --> 00:01:37,540 Nou gaan ons te hê 'n bykomende buffer. 30 00:01:37,540 --> 00:01:41,350 Dit is nie dieselfde as ons sprintf buffer waar hierdie buffer is die een 31 00:01:41,350 --> 00:01:45,020 dat ons lees in die data van die kaart dot rou. 32 00:01:45,020 --> 00:01:48,900 >> So het die buffer gaan wees van unsigned karakters, wat jy kan 33 00:01:48,900 --> 00:01:53,560 basies net ons behandel grepe, en dit is gaan wees van die grootte blok grootte 34 00:01:53,560 --> 00:01:57,950 waar, soos ons vertel nie, blok grootte is 512. 35 00:01:57,950 --> 00:02:03,070 So JPEG jy alles kan hanteer as blokke van 512 grepe. 36 00:02:03,070 --> 00:02:05,890 >> Nou gaan ons lus oor die hele lêer. 37 00:02:05,890 --> 00:02:12,980 Ons gaan om te f lees in ons buffer 'n enkele byte blok grootte tye van 38 00:02:12,980 --> 00:02:14,710 die kaart dot rou lêer. 39 00:02:14,710 --> 00:02:16,630 Nou wat beteken f lees terugkeer? 40 00:02:16,630 --> 00:02:20,050 Dit gee die aantal items dat dit suksesvol te lees. 41 00:02:20,050 --> 00:02:27,310 So as dit reggekry 512 grepe om te lees, dan ons wil om te sien of dit 'n 42 00:02:27,310 --> 00:02:29,700 JPEG of skryf dit op 'n JPEG lêer. 43 00:02:29,700 --> 00:02:34,450 En as dit nie terugkeer 512 grepe, dan óf die lêer in geëindig 44 00:02:34,450 --> 00:02:37,870 welke geval ons sal weg te breek van die y lus, of daar is 'n soort van fout 45 00:02:37,870 --> 00:02:40,300 in welke geval ons sal ook breek uit die y lus, maar ons sal wil hê om te rapporteer 46 00:02:40,300 --> 00:02:41,990 dat iets verkeerd geloop het. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 So die veronderstelling dat ons suksesvol gelees in 512 grepe, ons wil die eerste tjek 49 00:02:47,630 --> 00:02:53,070 te maak dat hierdie grepe dat ons lees net in begin met 'n JPEG. 50 00:02:53,070 --> 00:02:56,430 So as is JPEG kop van ons buffer. 51 00:02:56,430 --> 00:02:58,460 Nou wat dit is JPEG kop doen? 52 00:02:58,460 --> 00:03:00,120 Kom ons kyk. 53 00:03:00,120 --> 00:03:05,270 >> Hier sien ons dat hierdie funksie is terugkeer 'n bul, en dat die bul - 54 00:03:05,270 --> 00:03:08,820 Wel, hier, ons nagaan om te sien of kop nul is gelyk aan die konstante en 55 00:03:08,820 --> 00:03:11,880 kop een is hierdie konstante en kop twee is gelyk aan die konstante, 56 00:03:11,880 --> 00:03:15,640 kop drie is gelyk aan hierdie of hierdie konstante waar al hierdie konstantes is 57 00:03:15,640 --> 00:03:20,340 net hash gedefinieer reg hier en is presies wat ons vertel het in die spec 58 00:03:20,340 --> 00:03:22,700 dat 'n JPEG begin met. 59 00:03:22,700 --> 00:03:27,300 En so word die funksie net gaan terugkeer waar as hierdie buffer verteenwoordig 60 00:03:27,300 --> 00:03:31,750 die begin van 'n nuwe JPEG en valse anders. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 So as dit nie stel 'n nuwe JPEG, dan wil ons eers na te gaan om te sien of 63 00:03:38,490 --> 00:03:42,030 JPEG lêer is nie gelyk aan nul, in welke geval ons sluit dit. 64 00:03:42,030 --> 00:03:44,940 En so hoekom moet ons kyk om te sien of dit is nie nul? 65 00:03:44,940 --> 00:03:48,980 Wel, die eerste JPEG dat ons vind ons sal nie reeds 66 00:03:48,980 --> 00:03:50,440 'n oop JPEG lêer. 67 00:03:50,440 --> 00:03:55,580 En so, as ons probeer om dit te maak, dan ons is nie iets heeltemal reg nie. 68 00:03:55,580 --> 00:03:59,090 >> Maar elke daaropvolgende JPEG wat ons oopmaak, wil ons te sluit 69 00:03:59,090 --> 00:04:00,710 die vorige lêer. 70 00:04:00,710 --> 00:04:04,630 So nou gaan ons sprintf te gebruik soos ons gesê voordat waar ons met behulp van die 71 00:04:04,630 --> 00:04:06,280 buffer JPEG lêer naam. 72 00:04:06,280 --> 00:04:09,870 En ons gaan JPEG lêer te gebruik noem formaat as ons formaat. 73 00:04:09,870 --> 00:04:12,030 En wat is dit? 74 00:04:12,030 --> 00:04:18,450 Hier, sien ons dat dit persent nul 3D.JPEG waar die nul drie net 75 00:04:18,450 --> 00:04:22,089 sê dat ons drie heelgetalle sal gebruik vir hierdie opgestop met nulle. 76 00:04:22,089 --> 00:04:27,470 So dit is hoe ons sal nul nul kry one.JPEG en nul 10.JPEG en so aan. 77 00:04:27,470 --> 00:04:29,060 >> Ons gaan sprintf te gebruik. 78 00:04:29,060 --> 00:04:33,760 En die heelgetal wat ons inbring in die string is afgestomp JPEG 79 00:04:33,760 --> 00:04:36,380 verhaal, wat oorspronklik nul. 80 00:04:36,380 --> 00:04:39,950 Dus is die eerste lêer oopgemaak gaan nul nul nul dot JPEG. 81 00:04:39,950 --> 00:04:43,330 En dan is ons die verhoog dit so die volgende lêer maak ons ​​sal nul nul wees 82 00:04:43,330 --> 00:04:46,830 een dot JPEG en ons sal dit inkrementeer weer so sal dit nul nul twee dot wees 83 00:04:46,830 --> 00:04:49,100 JPEG en so aan. 84 00:04:49,100 --> 00:04:49,850 >> Alle regte. 85 00:04:49,850 --> 00:04:53,210 So nou die binnekant van JPEG-lêer noem, ons het die naam van die 86 00:04:53,210 --> 00:04:54,990 lêer wat ons wil hê. 87 00:04:54,990 --> 00:04:58,640 Ons kan f die lêer oopmaak vir skryf nie. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 En weer, moet ons seker maak seker dat die lêer suksesvol 90 00:05:02,820 --> 00:05:08,460 geopen is sedert as dit gedoen het nie, dan daar was 'n fout. 91 00:05:08,460 --> 00:05:13,100 >> So nou het ons verby die gekry het is dit 'n JPEG deel. 92 00:05:13,100 --> 00:05:16,390 En hier sien ons wat ons gaan na die JPEG te skryf. 93 00:05:16,390 --> 00:05:20,980 Maar ons moet eers die tjek wat sê As JPEG lêer is nie gelyk aan nul. 94 00:05:20,980 --> 00:05:22,490 Hoekom moet ons dit? 95 00:05:22,490 --> 00:05:28,020 Wel JPEG lêer is gelyk aan nul wanneer ons tans 'n oop JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Wat as kaart dot rou begin met 'n klomp van die grepe wat 97 00:05:31,870 --> 00:05:33,510 nie 'n JPEG verteenwoordig? 98 00:05:33,510 --> 00:05:36,240 Dan gaan ons wil spring oor die grepe. 99 00:05:36,240 --> 00:05:39,600 As ons nie hierdie tjek, dan is ons gaan 'n onoopgemaakte te skryf 100 00:05:39,600 --> 00:05:45,540 dien die eerste 512 grepe van die kaart wat is nie goed nie. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> So die veronderstelling ons het 'n oop-lêer, dan ons gaan om die lêer te skryf die 103 00:05:51,330 --> 00:05:53,290 512 grepe wat ons in ons buffer. 104 00:05:53,290 --> 00:05:57,390 En ons is weer nagaan om te maak seker te maak dat die 512 grepe suksesvol 105 00:05:57,390 --> 00:06:01,140 is omdat geskryf as hulle nie suksesvol geskryf is, dan is daar iets 106 00:06:01,140 --> 00:06:02,080 verkeerd geloop het. 107 00:06:02,080 --> 00:06:06,540 Ons sal ons lêers sluit, druk wat iets verkeerd geloop het, en terugkeer. 108 00:06:06,540 --> 00:06:10,940 Veronderstelling alles reg gaan, dan ons sal aanhou herhaling die sluiting van die 109 00:06:10,940 --> 00:06:15,060 ou lêer, die opening van die nuwe lêer, skriftelik data na die nuwe lêer, en so 110 00:06:15,060 --> 00:06:20,990 totdat uiteindelik, hierdie f gelees terugkeer nul, wat beteken 111 00:06:20,990 --> 00:06:23,280 dat die lêer gedoen. 112 00:06:23,280 --> 00:06:28,490 >> So nou dat die kaart lees is verby, ons sien dat ons gaan f sluit die 113 00:06:28,490 --> 00:06:33,250 laaste lêer wat ons gehad het oop, maar Ons monitor of JPEG-lêer 114 00:06:33,250 --> 00:06:34,900 nie gelyk null. 115 00:06:34,900 --> 00:06:39,520 Wel, die f naby sin maak, want as ons die opening van lêers, ons is die sluiting 116 00:06:39,520 --> 00:06:43,870 die vorige lêer, maar op die laaste lêer wat ons oopgemaak word nooit gesluit. 117 00:06:43,870 --> 00:06:45,580 So dit is wat dit is om te doen. 118 00:06:45,580 --> 00:06:47,720 >> Maar hoekom ons nodig het om te kyk vir null? 119 00:06:47,720 --> 00:06:53,130 Wel, wat as kaart dot rou het nie 'n enkele JPEG binnekant van dit? 120 00:06:53,130 --> 00:06:56,640 In daardie geval, sou ons nooit 'n lêer geopen. 121 00:06:56,640 --> 00:07:00,230 En as ons nooit 'n lêer oop te maak, moet ons nie probeer om die lêer te sluit. 122 00:07:00,230 --> 00:07:03,000 So dit is wat die tjek doen. 123 00:07:03,000 --> 00:07:07,880 >> Nou hier, soos ek gesê het, kon ons gebreek het dat y lus óf as 124 00:07:07,880 --> 00:07:13,520 die kaart eindig of indien daar sommige fout met lees van die kaart. 125 00:07:13,520 --> 00:07:16,680 So dit is om te kyk of daar 'n fout met die lees van die kaart, in 126 00:07:16,680 --> 00:07:19,400 welke geval, sal ons daar sê was 'n fout te lees nie. 127 00:07:19,400 --> 00:07:22,130 Ons wil nie die gebruiker om te dink alles suksesvol het. 128 00:07:22,130 --> 00:07:24,750 En ons sal een keer vir foute. 129 00:07:24,750 --> 00:07:29,580 >> Ten slotte, sal ons f sluit ons rou lêer, Ons kaart dot rou, wat aan te dui 130 00:07:29,580 --> 00:07:34,070 alles goed en terugkeer het nul en dit is dit. 131 00:07:34,070 --> 00:07:36,130 >> My naam is Rob en dit was herstel. 132 00:07:36,130 --> 00:07:42,102 >> [Speel van musiek]