[Redare a muzicii] ROB BOWDEN: Hi. Sunt Rob, și să sperăm că această soluție vă ajută să pui pe drumul spre recuperare. Așa că hai să începem. Noi vedem că imediat suntem doar pentru a vă asigura că suntem folosind Recuperare corect. Deci, utilizarea ar trebui să fie doar ceva ca slash punct recupera. Acum vom deschide așteptate carte dot fișier prime. Vedem aici că suntem folosind constant nume de fișier de subliniere prime, care până aici avem hash definite ca carte dot prime. OK. Deci, avem nevoie să ne asigurăm că deschis cu succes pentru că în cazul în care nu, atunci ar trebui să ne avertiza utilizatorul. Dar presupunând că a făcut-o, suntem acum O să declare un buffer de dimensiune JPEG fișier lungime nume. Deci, acest lucru va fi tampon care vom sprintf în. Deci, ceea ce este JPEG fișier nume de lungime? Până aici, vom vedea că este hash definite ca opt. Deci, de ce opt? Ei bine, un fișier dat va fi numit ceva de genul zero, zero, zero. JPG și apoi avem nevoie de un backslash zero. Așa că am nevoie de un tampon care poate stoca opt caractere. Acum vom avea un contor care este va ține evidența JPEG număr am găsit. Și, în sfârșit, vom avea o Fișier JPEG care este inițial nul care va fi selectat în momentul respectiv fișier deschis că suntem scris. Acum vom avea un tampon suplimentar. Acest lucru nu este la fel ca sprintf nostru tampon în care acest tampon este cea pe care le citești în datele de pe cardul de dot prime. Deci, tamponul va fi de caractere nesemnate, pe care le puteți de fapt doar trata ne bytes, și este va fi de dimensiune marimea blocului în cazul în care, așa cum am să vă spun, mărimea blocului este de 512. Deci, JPEG, puteți trata totul ca blocuri de 512 octeți. Acum mergem la bucla pe întregul dosar. Vom f citi în tampon nostru un singur ori octet de mărime bloc din cardul dot fișier RAW. Acum, ce f citit întoarce? Se returnează numărul de elemente că a citit cu succes. Deci, dacă a reușit să citească de 512 bytes, atunci ne-o dorim pentru a vedea dacă acest lucru a fost o JPEG sau scrie-l într-un fișier JPEG. Și dacă aceasta nu sa mai întors de 512 bytes, apoi fie fișierul sa încheiat în caz în care vom iesi din y buclă, sau există un fel de eroare în cazul în care ne vom rupe, de asemenea, din y bucla, dar vom vrei să reclami că ceva a mers prost. OK. Deci, presupunând că am citit cu succes în 512 de bytes, vrem să verificați mai întâi pentru a face ca aceste bytes pe care le doar citit într începe un JPEG. Deci, dacă este antet JPEG de tampon noastre. Acum, ce se antet JPEG face? Să ne uităm. Până aici, vom vedea că această funcție este întoarce un taur, și că taur - Ei bine, aici, suntem de verificare pentru a vedea dacă antet de zero este egal cu această constantă și antet unul este egal cu această constantă și antet doi este egal cu această constantă, antet trei este egal cu aceasta sau această constantă unde toate aceste constante sunt doar hash definit aici și sunt exact ceea ce v-am spus în spec. că un JPEG începe cu. Și astfel această funcție este doar de gând să return true dacă acest tampon reprezintă începutul unui nou JPEG și false în caz contrar. OK. Deci, dacă acest lucru nu reprezintă un nou JPEG, apoi ne-o dorim în primul rând să verificați pentru a vedea dacă Fișier JPEG nu este egal cu zero, în cazul în care l-am închide. Și așa că de ce avem nevoie pentru a verifica pentru a vedea dacă nu este nul? Ei bine, prima JPEG pe care le găsi noi nu va avea deja un fișier JPEG deschis. Și astfel, în cazul în care vom încerca să închidă că, atunci noi nu facem ceva destul de bine. Dar fiecare JPEG ulterior că am deschis, ne-o dorim pentru a închide fișierul anterior. Deci, acum vom folosi sprintf ca noi a declarat înainte de unde suntem cu ajutorul nume de fișier tampon JPEG. Și am de gând să utilizeze fișier JPEG nume format ca formatul nostru. Și ce e asta? Până aici, vom vedea că acesta este de zero la suta 3D.JPEG în cazul în care trei de zero doar spune ca vom folosi trei numere întregi pentru acest căptușit cu zerouri. Deci, acesta este modul în care vom ajunge la zero la zero one.JPEG și zero, 10.JPEG și așa mai departe. Vom folosi sprintf. Și întreg care ne introduce în șirul este JPEG amorțite recuperat, care este inițial zero. Deci, primul dosar deschis se va să fie zero, zero, zero, punct JPEG. Și apoi ne-l incrementarea astfel imaginea următoare vom deschide va fi zero la zero un punct JPEG și vom incrementa din nou, asa ca va fi zero, zero, două puncte JPEG și așa mai departe. Bine. Deci, acum, în interiorul de fișier JPEG nume, avem numele a fișier pe care ne-o dorim. Putem f deschide fișierul pentru scriere. OK. Și încă o dată, avem nevoie pentru a verifica pentru a face sigur că fișierul cu succes deschis deoarece în cazul în care a făcut-o nu, atunci au existat unele erori. Deci, acum am ajuns trecut este aceasta o parte JPEG. Și aici, vedem vom pentru a scrie la JPEG. Dar trebuie mai întâi această verificare, care spune dacă fișierul JPEG nu este egal cu zero. De ce avem nevoie de asta? Ei bine fișier JPEG este egal cu zero, atunci când ne-am au în prezent un JPEG deschis. Ce se întâmplă dacă începe prima carte dot cu o grămadă de bytes care nu reprezintă un JPEG? Apoi ne-am de gând să doriți să săriți peste aceste bytes. Dacă nu avem această verificare, atunci suntem de gând să scrie la un nedeschis fișier primele 512 de bytes de cardul care nu este bun. OK. Deci, presupunând că avem un fișier deschis, apoi vom scrie că dosarul 512 bytes pe care le avem în tampon nostru. Și suntem din nou de verificare pentru a face vă că 512 de bytes cu succes au fost scrise pentru că în cazul în care nu au fost scris cu succes, atunci ceva a mers prost. Vom închide dosarele noastre, imprimați că ceva a mers prost, și retur. Presupunând că totul merge corect, atunci vom continua looping închiderea fișier vechi, deschiderea nou dosar, scris date la noul fișier, și așa până când în cele din urmă, acest lucru f citit returnează zero, ceea ce înseamnă că fișierul este de facut. Deci, acum că citirea cardului este de peste, ne-am vedea că vom f închide ultimul fișier care am avut deschise, dar vom verifica dacă fișierul JPEG nu este egal cu zero. Ei bine, f Închideți are sens, deoarece în calitate de suntem deschiderea fișierelor, suntem de închidere fișierul anterior, dar cel din urmă fișier pe care am deschis nu se închide. Deci, asta e ceea ce acest lucru este de a face. Dar de ce avem nevoie pentru a verifica pentru nul? Ei bine, ce dacă card de punct prime nu au un singur JPEG în interiorul de ea? În acest caz, vom avea nu a deschis un fișier. Și dacă nu ne-am deschide un fișier, ar trebui să ne nu încercați să închideți acel fișier. Deci, asta e ceea ce această verificare este de a face. Acum, aici, așa cum am spus mai înainte, ne-am putea au izbucnit că y bucla, fie în cazul în care cardul sa încheiat sau dacă există unele eroare de citire de pe card. Deci, acest lucru este de verificare pentru a vedea dacă a existat o eroare de citire de pe card, în caz în care, vom spune acolo a fost o eroare de citire. Noi nu vrem ca utilizatorul să gândească totul a decurs cu succes. Și vom returna unul de eroare. În cele din urmă, vom f închide dosarul nostru prime, cartea noastra de dot prime, pentru a indica faptul că totul a mers bine și retur zero, și asta e tot. Numele meu este Rob și acest lucru a fost Recover. [Redare a muzicii]