[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]