>> [За възпроизвеждане на музика]
>> ROB BOWDEN: Hi.
Аз съм Роб, и нека се надяваме, че това решение помага да поставите
по пътя към възстановяване.
Така че нека да започнем.
>> Ние виждаме, че ние веднага си само за да се уверите, че ние сме
използване Възстановяване правилно.
Така че използването трябва да бъде само нещо, като точка наклонена черта се възстанови.
>> Сега отиваме да отворите очакваното карта Дот суров файл.
Виждаме тук, че ние сме с помощта на име на константа сурово долна файл,
които тук имаме хеш дефинира като карти Дот сурови.
OK.
>> Така че ние трябва да се уверите, че това успешно отворен, защото, ако го
не, тогава ние трябва да предупреждава потребителя.
Но ако приемем, че го е направил, ние сме сега ще обявят буфер с размер JPEG
подаде наименование дължина.
Така че това ще бъде най-буфер, който ние ще Оферта номер в.
>> Така че това, което е JPEG файл наименование дължина?
До тук, ние виждаме, че това е хеш определя като осем.
Така че, защо осем?
Ами даден файл ще бъде назован нещо като нула нула нула.
JPG и след това ние се нуждаем от наклонена черта нула.
Така че ние се нуждаем от буфер, който може да съхранява осем символа.
Сега отиваме да има брояч, който да е ще следи за
брой на JPEG открихме.
>> И накрая, ние ще имаме JPEG файл, който в началото е нула
която ще бъде текущо отворен файл, който пишем да.
Сега отиваме да има допълнителен буфер.
Това не е същото като нашия Оферта номер буфер, където този буфер е този
че ние сме четене в данните от картата Дот сурови.
>> Така че буферът ще бъде на неподписани символи, които можете да
основно само се отнасят с нас байта, и това е ще бъде с размер на размер на блока
когато, както ние ви кажа, размер на блока е 512.
Така JPEGs можете да лекуват всичко като блокове от 512 байта.
>> Сега отиваме да се накъдрят над цялата преписка.
Отиваме да е прочетете в нашия буфер единични пъти байт големина на блока от
картата Дот суров файл.
Сега какво е прочетете върне?
Тя връща броя на елементите че тя успешно се чете.
Така че, ако той успя да прочете 512 байта, а след това искаме да видим дали това е
JPEG или го напиша във файл JPEG.
И ако тя не се върне 512 байта, след това или файла е приключило в
който случай ние ще се измъкнат от ш контур, или има някаква грешка
като в този случай също така ние ще се измъкнат от у линия, но ние ще искате да докладвате
че нещо се е объркало.
>> OK.
Така че, ако приемем, че ние успешно се чете в 512 байта, ние искаме първо да проверите
да се направи, че тези байтове, които ние просто прочетете в започне JPEG.
Така че, ако е JPEG с глава на нашия буфер.
Сега какво се прави JPEG заглавие?
Нека да разгледаме.
>> До тук, ние виждаме, че тази функция е връщане на бик, и че бик -
и тук, ние сме проверка, за да видим дали заглавна нула е равно на тази постоянна и
заглавна едно е равно на тази постоянна и заглавна две е равно на тази константа,
заглавна три е равно на това или това постоянна, където всички тези константи са
просто хеш дефиниран точно тук и са точно това, което ви казах, в спецификацията
че JPEG започва с.
И така, тази функция е просто ще връщане вярно, ако този буфер представлява
началото на нов JPEG и лъжа в противен случай.
>> OK.
Така че, ако това не представлява нова JPEG, След това ние първо искам да се провери, за да видите, ако
JPEG файл не е равна на нула, в този случай ние го затворите.
И така, защо ние трябва да се провери , за да видите, ако това не е нула?
Ами много първи JPEG, че ние намерите ние няма вече да има
отворен JPEG файл.
И така, ако се опитаме да затворите това, тогава ние не правим нещо съвсем прав.
>> Но всеки следващ JPEG, че ние отваряме, ние искаме да се затвори
предишния файл.
Така че сега ние ще използваме Оферта номер, тъй като ние каза преди, когато сме с помощта на
буфер JPEG името на файла.
И ние започваш да се използва JPEG файл назовем формат като наш формат.
И какво е това?
До тук, ние виждаме, че тя е нула процента 3D.JPEG където нула три просто
казва, че ние ще използваме три числа за това подплатени с нули.
Така че това е начина, по който ще получите нула нула one.JPEG и нула 10.JPEG и така нататък.
>> Ние ще използваме Оферта номер.
И цялото число, че ние сме вмъкване в низа е вцепенен JPEGs
възстановени, което е първоначално нула.
Така че първият файл се отвори ще да бъде нула нула нула точка JPEG.
И след това ние сме го увеличаване, така че следващия файл отворим ще бъде нула нула
една точка JPEG и ние ще го увеличите отново, така че ще бъде нула нула две точка
JPEG и така нататък.
>> Добре.
Така че сега вътрешността на JPEG файл име, имаме името на
подаде, че искаме.
Ние може да е отворите този файл за писане.
OK.
И още веднъж, ние трябва да се провери, за да се направи уверите, че успешно файл
отвори, тъй като, ако го е направил не, тогава има някаква грешка.
>> Така че сега ние сме придобили миналото Дали това е JPEG част.
И ето, ние виждаме, ние ще да пише в JPEG.
Но ние първо трябва тази проверка, която казва, ако JPEG файл не е равно на нула.
Защо имаме нужда от това?
Е JPEG файл се равнява на нула, когато ние В момента има открита JPEG.
>> Какво става, ако картата дот суровини започва с един куп от байтове, които
не представляват JPEG?
След това ние ще искате да прескачам тези байтове.
Ако не разполагате с тази проверка, тогава ние сме щях да пиша, за да се неотворена
подаде първите 512 байта картата, която не е добро.
OK.
>> Така че, ако приемем, ние имаме един отворен файл, а след това отиваме да пише че преписката на
512 байта, които имаме в нашия буфер.
И ние отново проверка, за да се направи Уверете се, че 512 байта успешно
са написани, защото, ако те не са били успешно написано, тогава нещо
се е объркало.
Ще затворим файлове, принтиране, че нещо се е объркало, и връщане.
Ако приемем, че всичко върви добре, а след ние ще продължаваме примка затваряне на
стар файл, отваряне на нов файл, писане данни на нов файл, и така
, докато най-накрая, това е чете връща нула, което означава,
че файлът е направено.
>> Така че сега, четене на карта е свършила, ние се види, че отиваме да е затворете
последния файл, който имахме отворен, но ние проверяваме дали JPEG файл
не е равно на нула.
Ами е края има смисъл, тъй като ние сме отваряне на файлове, ние затваряме
предишния файл, но съвсем последното файл, който отворихме никога не получава затворен.
Така че това е, което това се прави.
>> Но защо трябва да се провери за нищожна?
Ами какво, ако картата точка сурово не направих има един JPEG вътре в него?
В този случай, ние ще трябва никога не отвори файл.
И ако ние никога не отворите файл, ние трябва да Не се опитвайте да затворите този файл.
Така че това е, което тази проверка се прави.
>> Сега тук, както казах и преди, бихме могли да са разбити, че у цикъл или ако
картата е изтекъл или ако са налице някаква грешка при четене от картата.
Така че това е проверка, за да се види дали има грешка при четене от картата, в
този случай, ние ще кажем, че има Беше четене грешка.
Ние не искаме потребителят да се мисли всичко мина успешно.
И ние ще се върне един за грешка.
>> И накрая, ще е затваряме суров файл, ни карти Дот сурови, за да покаже, че
всичко мина добре и връщане нула и това е всичко.
>> Моето име е Роб и това е възстановяване.
>> [За възпроизвеждане на музика]