[REPRODUCCIÓ DE MÚSICA] ROB Bowden: Hi. Estic Rob, i esperem que aquesta solució l'ajuda a posar en el camí cap a la recuperació. Així que anem a començar. Veiem que immediatament estem només per assegurar-se que estem Recuperar utilitzant correctament. Així que l'ús ha de ser només una cosa com slash dot recuperar-se. Ara anem a obrir l'esperat targeta dot arxiu RAW. Veiem aquí que estem fent servir la constant nom d'arxiu subratllat primera, que aquí tenim de hash definida com la targeta del punt prima. D'acord. Així que hem de assegurar-nos que aquest obert amb èxit, perquè si No, hem d'advertir a l'usuari. Però suposant que fos així, ara estem va a declarar un buffer de mida JPEG presentar la longitud del nom. Així que això serà la memòria intermèdia que anem a sprintf en. Llavors, quina és la longitud del nom de l'arxiu JPEG? Fins aquí, veiem que es tracta d' el hash definida com vuit. Llavors, per vuit? Bé un arxiu determinat serà nomenat una mena zero zero zero. JPG i després necessitem una barra invertida zero. Així que necessitem un memòria intermèdia que pot emmagatzemar 08:00 caràcters. Ara tindrem un comptador que és realitzarà un seguiment de la JPEG nombre que trobem. I, finalment, tindrem un Arxiu JPEG que inicialment és nul · la que serà el moment arxiu obert que estem escrivint a. Ara tindrem un tampó addicional. Aquest no és el mateix que la nostra sprintf buffer on aquest tampó és l'un que estem llegint en les dades de la targeta del punt de cru. Així el tampó serà de caràcters sense signe, que es pot bàsicament només ens tracten bytes, i és serà de mida mida de bloc on, com els diem, mida del bloc és de 512. Així que els arxius JPEG es pot tractar tot com blocs de 512 bytes. Ara anem a bucle sobre tot l'arxiu. Anem a llegir f al nostre buffer un sol moment de bytes de mida de bloc de la targeta dot arxiu RAW. Ara, què f llegir tornar? Retorna el nombre d'elements que va llegir correctament. Així que si les hi va arreglar per llegir 512 bytes, a continuació, volem veure si es tractava d'un JPEG o escriure en un arxiu JPEG. I si no ha tornat 512 bytes, llavors o bé l'arxiu ha acabat en aquest cas sortirem de la i llaç, o si hi ha algun tipus d'error en aquest cas també sortirem de el bucle i, però també anem a voler informar que alguna cosa va sortir malament. D'acord. Així que suposant que llegim amb èxit en 512 bytes, volem primer xec per fer que aquests bytes que ens acabo de llegir en començar un JPEG. Així que si és encapçalat JPEG del nostre buffer. Ara el que està fent capçalera JPEG? Fem una ullada. Fins aquí, veiem que aquesta funció és tornar un toro, i el toro - bé aquí, estem comprovant si capçalera de zero és igual a aquesta constant i capçalera d'un és igual a aquesta constant i encapçalat dos és igual a aquesta constant, capçalera de tres és igual a això o això constant on totes aquestes constants són només el hash definit aquí i són exactament el que vostè diu en l'especificació que comença amb un arxiu JPEG. I pel que aquesta funció és només va a return true si aquest buffer representa l'inici d'un nou JPEG i false en cas contrari. D'acord. Així que si això sí representa un nou JPEG, llavors primer anem a comprovar per veure si Arxiu JPEG no és igual a null, en aquest cas el tanquem. I llavors per què hem de comprovar per veure si no és nul? Bé, la primera JPEG que no trobarem ja tenen un arxiu JPEG obert. I així, si intentem tancar això, llavors no estem fent alguna cosa molt bé. Però cada JPEG posterior que obrim, volem tancar el fitxer anterior. Així que ara utilitzarem sprintf com nosaltres dit abans en el qual estem utilitzant la Nom del fitxer de memòria intermèdia JPEG. I farem servir l'arxiu JPEG nomenar format que el nostre format. I què és això? Fins aquí, veiem que és zero per cent 3D.JPEG on el tres zero només diu que utilitzarem tres enters per a aquest emplenat amb zeros. Així que així és com anem a arribar a zero zero one.JPEG i zero 10.jpeg i així successivament. Utilitzarem sprintf. I el sencer que estem inserint a la cadena és JPEG entumits recuperat, que és originalment zero. Així que el primer arxiu obert que està passant que és zero zero punt zero JPEG. I llavors estem incrementant així la fitxer següent obrim serà zero zero un punt JPEG i estarem incrementem de nou, així que serà zero zero dos punts JPEG i així successivament. Està bé. Així que ara l'interior de l'arxiu JPEG nom, tenim el nom de la arxiu que volem. Podem f obrir aquest arxiu per a escriptura. D'acord. I un cop més, hem de comprovar per assegurar-se Assegureu-vos que l'arxiu correctament obert ja que si no ho va fer, llavors hi va haver algun error. Així que ara que hem arribat més enllà de la Aquesta és una part JPEG. I aquí, veiem que anem escriure al JPEG. Però primer tenim aquest xec que diu si l'arxiu JPEG no és igual a nul. Per què necessitem això? Bé arxiu JPEG és igual a null quan ens Actualment tenir un JPEG obert. Què passa si s'inicia primeres dot targeta amb un munt de bytes que no representen un JPEG? Llavors anem a voler saltar sobre aquests bytes. Si no tenim aquesta comprovació, llavors estem va a escriure en un tancar presentar els primers 512 bytes de la targeta que no és bo. D'acord. Així que assumint que tenim un arxiu obert, llavors anem a escriure en aquest arxiu de la 512 bytes que tenim al nostre buffer. I estem comprovant un cop més per fer assegurar-se que els 512 bytes amb èxit van ser escrits perquè si no ho fossin escrit correctament, llavors alguna cosa que va sortir malament. Tancarem els nostres arxius, imprimir aquesta alguna cosa va sortir malament, i la tornada. Suposant que tot va correctament, seguirem tancant el bucle vell arxiu, obrir el nou arxiu, escriptura les dades en el nou arxiu, i així fins que per fi, aquest llegeix f retorna zero, el que significa que l'arxiu es fa. Així que ara que la lectura de la targeta ha acabat, veiem que anem a tancar el f últim arxiu que teníem obert, però estem comprovant si el fitxer JPEG no és igual a nul. Bé, la f estreta té sentit perquè com estem obrint arxius, anem a tancar el fitxer anterior, però l'últim arxiu que obrim mai es tanca. Així que això és el que està fent. Però per què hem de comprovar si hi ha nul? Bé, i si la targeta de punts primes no ha tenir una sola JPEG dins d'ella? En aquest cas, hauríem de mai obert un arxiu. I si mai obrim un arxiu, hem No tanqueu el fitxer. Així que això és el que aquest control està fent. Ara aquí, com he dit abans, podríem han esclatat que i bucle o bé si la targeta ha acabat o si hi ha alguns error de lectura de la targeta. Així que aquesta és la comprovació per veure si hi havia un error en la lectura de la targeta, en aquest cas, direm que hi ha va ser un error de lectura. No volem que l'usuari pensi tot ha anat correctament. I ens tornem un per l'error. Finalment, anem a f tanquem nostre arxiu RAW, la nostra targeta dot primera, per indicar que tot ha anat bé i el retorn zero i això és tot. El meu nom és Rob i això era recuperar. [REPRODUCCIÓ DE MÚSICA]