>> [MUSIC PLAYING]
>> ROB Bowden: Hi.
Aku Rob, dan mari kita berharap bahwa Solusi ini membantu menempatkan Anda
di jalan menuju pemulihan.
Jadi mari kita mulai.
>> Kita melihat bahwa segera kita hanya untuk memastikan bahwa kita
menggunakan Recover benar.
Jadi penggunaan hanya harus menjadi sesuatu seperti dot slash pulih.
>> Sekarang kita akan membuka diharapkan kartu dot file mentah.
Kita lihat di sini bahwa kita menggunakan konstan nama file underscore mentah,
yang di sini kita memiliki hash didefinisikan sebagai kartu dot baku.
OK.
>> Jadi kita perlu memastikan bahwa berhasil dibuka karena jika
tidak, maka kita harus memperingatkan pengguna.
Tetapi dengan asumsi bahwa hal itu, kita sekarang akan mendeklarasikan penyangga ukuran JPEG
mengajukan nama panjang.
Jadi ini akan menjadi buffer yang kita akan sprintf ke.
>> Jadi apa yang JPEG nama file panjang?
Sampai di sini, kita melihat bahwa itu hash didefinisikan sebagai delapan.
Jadi mengapa delapan?
Nah file yang diberikan akan diberi nama sesuatu seperti nol nol nol.
JPG dan kemudian kita perlu backslash nol.
Jadi kita perlu penyangga yang dapat menyimpan delapan karakter.
Sekarang kita akan memiliki counter yang akan melacak
nomor JPEG yang kami temukan.
>> Dan akhirnya, kita akan memiliki File JPEG yang awalnya nol
yang akan menjadi saat membuka file yang kita sedang menulis ke.
Sekarang kita akan memiliki buffer tambahan.
Ini tidak sama dengan sprintf kami penyangga di mana penyangga ini adalah salah satu
bahwa kita membaca dalam data dari kartu dot mentah.
>> Jadi buffer akan menjadi unsigned chars, yang Anda dapat
pada dasarnya hanya memperlakukan kita byte, dan itu akan menjadi ukuran ukuran blok
di mana, karena kami memberitahu Anda, ukuran blok adalah 512.
Jadi JPEG Anda dapat mengobati segala sesuatu sebagai blok 512 byte.
>> Sekarang kita akan lingkaran atas seluruh file.
Kita akan f membaca ke dalam buffer kita kali byte ukuran blok tunggal dari
kartu dot file mentah.
Sekarang apa f baca kembali?
Ia mengembalikan jumlah item yang berhasil membaca.
Jadi jika berhasil membaca 512 byte, maka kita ingin melihat apakah ini merupakan
JPEG atau menulis ke file JPEG.
Dan jika itu tidak kembali 512 byte, maka baik berkas ini telah berakhir
hal ini kita akan keluar dari y lingkaran, atau ada semacam kesalahan
dalam hal ini kita juga akan keluar dari y lingkaran, tapi kami akan ingin melaporkan
sesuatu yang tidak beres.
>> OK.
Jadi dengan asumsi bahwa kita berhasil membaca dalam 512 byte, kita ingin cek pertama
untuk membuat byte ini yang kita hanya membaca di mulai JPEG a.
Jadi jika adalah JPEG header penyangga kami.
Sekarang apa yang JPEG sundulan lakukan?
Mari kita lihat.
>> Sampai di sini, kita melihat bahwa fungsi ini kembali banteng, dan banteng yang -
baik di sini, kami sedang memeriksa untuk melihat apakah Header nol sama dengan konstan dan
Header satu sama dengan konstan dan Header dua sama dengan konstan ini,
kepala tiga sama ini atau ini konstan di mana semua konstanta ini
hanya hash didefinisikan di sini dan persis apa yang kita katakan di spec
bahwa JPEG dimulai dengan.
Dan fungsi ini hanya akan return true jika buffer ini merupakan
awal dari JPEG baru dan false jika tidak.
>> OK.
Jadi, jika ini tidak mewakili JPEG baru, maka pertama-tama kita ingin memeriksa untuk melihat apakah
JPEG file tidak sama dengan nol, dalam hal ini kita menutupnya.
Jadi mengapa kita perlu memeriksa untuk melihat apakah itu tidak nol?
Nah JPEG pertama yang kita menemukan kita tidak akan sudah
file JPEG terbuka.
Jadi, jika kita mencoba untuk menutup itu, maka kita tidak melakukan sesuatu yang benar.
>> Tapi setiap JPEG berikutnya yang kita buka, kita ingin menutup
file sebelumnya.
Jadi sekarang kita akan menggunakan sprintf seperti yang kita mengatakan sebelum di mana kita menggunakan
nama file JPEG penyangga.
Dan kita akan menggunakan file JPEG nama Format sebagai format kami.
Dan apa itu?
Sampai di sini, kita melihat bahwa itu adalah nol persen 3D.JPEG mana nol tiga hanya
mengatakan bahwa kita akan menggunakan tiga bilangan bulat untuk ini diisi dengan nol.
Jadi ini adalah bagaimana kita akan mendapatkan nol nol one.JPEG dan nol 10.JPEG dan sebagainya.
>> Kita akan menggunakan sprintf.
Dan integer yang kita memasukkan ke dalam string adalah JPEG mati rasa
pulih, yang awalnya nol.
Jadi file pertama kali dibuka akan menjadi nol nol nol dot JPEG.
Dan kemudian kita incrementing itu sehingga file selanjutnya kita buka akan menjadi nol nol
satu titik JPEG dan kami akan kenaikan itu lagi sehingga akan nol nol dua titik
JPEG dan sebagainya.
>> Baik.
Jadi sekarang bagian dalam file JPEG nama, kita memiliki nama
mengajukan yang kita inginkan.
Kita bisa f membuka file untuk menulis.
OK.
Dan sekali lagi, kita perlu memeriksa untuk membuat yakin bahwa file berhasil
dibuka karena jika tidak, maka ada beberapa kesalahan.
>> Jadi sekarang kita sudah melewati apakah ini bagian JPEG.
Dan di sini, kita melihat kita akan menulis ke JPEG.
Tapi pertama-tama kita cek ini yang mengatakan jika file JPEG tidak nol sama.
Mengapa kita perlu itu?
Nah file JPEG sama dengan nol ketika kita saat ini memiliki JPEG terbuka.
>> Bagaimana jika kartu dot dimulai baku dengan sekelompok byte yang
tidak mewakili JPEG?
Kemudian kita akan ingin melewatkan mereka byte.
Jika kita tidak memiliki cek ini, maka kita akan menulis ke belum dibuka
mengajukan 512 byte pertama dari kartu yang tidak baik.
OK.
>> Jadi dengan asumsi kita memiliki file terbuka, maka kita akan menulis ke file yang
512 byte yang kita miliki dalam buffer kita.
Dan kami sekali lagi memeriksa untuk membuat memastikan bahwa 512 byte berhasil
ditulis karena jika mereka tidak berhasil ditulis, kemudian sesuatu
beres.
Kami akan menutup file-file kita, mencetak bahwa sesuatu yang tidak beres, dan kembali.
Dengan asumsi semuanya berjalan dengan benar, maka kita akan terus looping menutup
file lama, membuka file baru, penulisan data ke file baru, dan sebagainya
sampai akhirnya, f ini telah dibaca kembali nol yang berarti
bahwa file tersebut dilakukan.
>> Jadi sekarang bahwa membaca kartu berakhir, kita melihat bahwa kita akan f menutup
File terakhir yang kita miliki terbuka, tapi kita memeriksa apakah file JPEG
tidak nol tidak sama.
Nah f dekat masuk akal karena sebagai kita membuka file, kita menutup
file sebelumnya, tapi yang terakhir file yang kita buka tidak pernah akan ditutup.
Jadi itulah yang ini lakukan.
>> Tapi mengapa kita perlu memeriksa null?
Nah bagaimana jika kartu dot mentah tidak memiliki JPEG tunggal di dalamnya?
Dalam hal ini, kita akan memiliki tidak pernah membuka file.
Dan jika kita tidak pernah membuka file, kita harus tidak mencoba untuk menutup file tersebut.
Jadi itulah yang cek ini lakukan.
>> Sekarang di sini, seperti yang saya katakan sebelumnya, kita bisa telah rusak bahwa y lingkaran baik jika
kartu telah berakhir atau jika ada beberapa kesalahan membaca dari kartu.
Jadi ini memeriksa untuk melihat apakah ada kesalahan membaca dari kartu, di
hal ini, kita akan mengatakan ada adalah kesalahan membaca.
Kami tidak ingin pengguna untuk berpikir semuanya berjalan dengan sukses.
Dan kami akan kembali satu kesalahan.
>> Akhirnya, kami akan menutup file f baku kami, kartu kami dot mentah, untuk menunjukkan bahwa
semuanya berjalan baik dan kembali nol dan hanya itu.
>> Nama saya Rob dan ini adalah Recover.
>> [MUSIC PLAYING]