>> [GIOCO MUSICA]
>> ROB BOWDEN: Ciao.
Sono Rob e speriamo che questa soluzione consente di mettere
sulla strada della ripresa.
Quindi cerchiamo di iniziare.
>> Vediamo che subito siamo solo per assicurarsi che siamo
Uso di Ripristino correttamente.
Quindi, l'utilizzo dovrebbe essere solo qualcosa come barra dot recuperare.
>> Ora stiamo andando ad aprire l'atteso Scheda dot file raw.
Vediamo qui che stiamo usando la costante il nome del file di sottolineatura raw,
che qui abbiamo hash definita come carta dot crudo.
OK.
>> Quindi dobbiamo fare in modo che tale aperto con successo perché se
non ha, allora dovremmo avvertire l'utente.
Ma supponendo che lo ha fatto, ora siamo andando a dichiarare un buffer di dimensioni JPEG
file di lunghezza del nome.
Quindi questo sarà il buffer che stiamo andando a sprintf in.
>> Così che cosa è un file JPEG lunghezza del nome?
Quassù, vediamo che si tratta di hash definito come otto.
Allora perché otto?
Beh un dato file verrà denominato qualcosa come zero zero zero.
JPG e quindi abbiamo bisogno di un backslash zero.
Quindi abbiamo bisogno di un buffer che può memorizzare otto caratteri.
Ora stiamo andando ad avere un contatore che è andando a tenere traccia della
numero JPEG abbiamo trovato.
>> E, infine, stiamo andando ad avere un File JPEG che inizialmente è nullo
che sta per essere attualmente aprire il file che stiamo scrivendo a.
Ora stiamo andando ad avere un buffer aggiuntivo.
Questo non è la stessa della nostra sprintf buffer in cui la memoria è quello
che stiamo leggendo nei dati dalla scheda dot crudo.
>> Così il buffer sarà di caratteri senza segno, che è possibile
fondamentalmente solo noi trattare byte, ed è andando ad essere di dimensioni dimensione del blocco
dove, come vi diciamo, dimensione del blocco è di 512.
Quindi JPEG si può trattare tutto come blocchi di 512 byte.
>> Ora stiamo andando a ciclo per tutto il file.
Stiamo andando a f di leggere nella nostra tampone un singolo volte byte di dimensione del blocco da
la scheda dot file raw.
Ora, che cosa fa f legge di ritorno?
Restituisce il numero di elementi che si leggeva correttamente.
Quindi, se è riuscito a leggere 512 byte, quindi vogliamo vedere se questo è stato un
JPEG o scrivere in un file JPEG.
E se non ha restituito 512 byte, allora o il file è finito in
qual caso faremo uscire dalla y loop, o ci sono alcuni tipo di errore
nel qual caso ci sarà anche rompere su il ciclo y, ma ci vorrà riferire
che qualcosa è andato storto.
>> OK.
Quindi, supponendo che siamo riusciti a leggere in 512 byte, vogliamo primo controllo
per fare che questi byte che basta leggere in iniziare un JPEG.
Quindi, se è JPEG intestazione della nostra buffer.
Ora che cosa sta facendo JPEG intestazione?
Diamo un'occhiata.
>> Quassù, vediamo che questa funzione è restituzione di un toro, e che toro -
bene qui, stiamo verificando se intestazione uguale a zero questa costante e
intestazione uno uguale a questa costante e intestazione due è uguale a questa costante,
intestazione tre è uguale questo o questo costante dove tutte queste costanti sono
proprio hash definito qui e sono esattamente quello che vi abbiamo detto nelle specifiche
che un JPEG inizia con.
E quindi questa funzione è solo andare a return true se questo buffer rappresenta
l'inizio di un nuovo JPEG e false altrimenti.
>> OK.
Quindi, se questo non rappresenta un nuovo JPEG, allora per prima cosa vogliamo verificare se
File JPEG non è uguale a null, nel qual caso noi chiudiamo.
E allora perché abbiamo bisogno di verificare per vedere se non è nullo?
Beh, la prima JPEG che trovare non avremo già
un file JPEG aperto.
E così, se cerchiamo di chiudere quella, poi non stiamo facendo qualcosa di giusto.
>> Ma ogni successivo JPEG apriamo, vogliamo chiudere
il file precedente.
Così ora stiamo andando a utilizzare sprintf come noi detto prima dove stiamo usando l'
nome file del buffer JPEG.
E abbiamo intenzione di utilizzare il file JPEG nome di formato come il nostro format.
E che cos'è?
Quassù, vediamo che è pari a zero per cento 3D.JPEG dove lo zero tre soli
dice che useremo tre numeri interi per questo riempito con zeri.
Quindi questo è come ci arriveremo zero zero one.JPEG e lo zero 10.JPEG e così via.
>> Stiamo per usare sprintf.
E il numero intero che stiamo inserendo nella stringa è JPEG intorpidite
recuperato, che è inizialmente zero.
Così il primo file aperto che sta succedendo essere zero zero zero virgola JPEG.
E poi stiamo incrementando così la file successivo apriamo sarà zero zero
un punto JPEG e faremo incrementiamo che di nuovo così sarà zero zero due punti
JPEG e così via.
>> Bene.
Così ora all'interno del file JPEG nome, abbiamo il nome del
file che vogliamo.
Possiamo f aprire il file per la scrittura.
OK.
E ancora una volta, dobbiamo controllare per Assicurarsi che il file correttamente
aperto dal se non ha, quindi c'era qualche errore.
>> Così ora abbiamo ottenuto oltre il questa è una parte JPEG.
E qui, si vede che stiamo andando di scrivere al JPEG.
Ma dobbiamo prima questo controllo che dice se il file JPEG non è uguale null.
Perché abbiamo bisogno di questo?
Beh file JPEG uguale nullo quando attualmente hanno un JPEG aperto.
>> Che se la scheda dot inizia prime con un mazzo di byte che
non rappresentano un JPEG?
Poi andremo a voler saltare quei byte.
Se non abbiamo questo controllo, allora siamo andando a scrivere in un aperto
presentare i primi 512 byte di la carta che non è buono.
OK.
>> Quindi, supponendo che abbiamo un file aperto, quindi andremo a scrivere quel file l'
512 byte che abbiamo nel nostro buffer.
E stiamo ancora una volta il controllo per assicurarsi Assicurarsi che i 512 byte successo
sono stati scritti perché se non fossero scritto con successo, allora qualcosa
è andato storto.
Ci chiudiamo i nostri file, la stampa che qualcosa è andato storto, e ritorno.
Supponendo che tutto va bene, poi terremo loop chiusura del
vecchio file, l'apertura del nuovo file, la scrittura dati al nuovo file, e così
fino alla fine, questo f leggi restituisce zero, che significa
che il file è fatto.
>> Quindi, ora che la lettura della carta è finita, vediamo che stiamo andando a chiudere la f
ultimo file che avevamo aperto, ma stiamo controllando se il file JPEG
non è uguale a null.
Beh, la f vicino ha un senso, perché come stiamo aprendo i file, stiamo chiudendo
il file precedente, ma l'ultimo il file che abbiamo aperto non viene mai chiusa.
Ecco, questo è ciò che questo sta facendo.
>> Ma perché abbiamo bisogno di controllare per nulla?
Beh, cosa se la scheda dot prime non ha avere un unico JPEG all'interno di esso?
In quel caso, avremmo mai aperto un file.
E se non abbiamo mai aprire un file, dovremmo Non tentare di chiudere quel file.
Ecco, questo è ciò che questo controllo sta facendo.
>> Ora qui, come ho detto prima, abbiamo potuto hanno rotto che y ciclo o se
la scheda è terminato o se vi sono qualche errore di lettura dalla scheda.
Quindi questo è il controllo per vedere se c'era un errore di lettura dalla scheda, in
qual caso, diremo lì è stato un errore di lettura.
Non vogliamo l'utente a pensare tutto è andato con successo.
E torneremo uno per errore.
>> Infine, faremo f chiudiamo il nostro file raw, la nostra carta dot crudo, per indicare che
tutto è andato bene e ritorno zero e il gioco è fatto.
>> Il mio nome è Rob e questo era Recover.
>> [GIOCO MUSICA]