>> [Музыка играет]
>> ROB BOWDEN: Привет.
Я Роб, и будем надеяться, что это решение помогает поставить вас
на пути к выздоровлению.
Так что давайте начнем.
>> Мы видим, что сразу мы просто чтобы убедиться, что мы
с использованием Восстановление правильно.
Таким образом, использование должно быть просто что-то как точка слэш восстановить.
>> Теперь мы собираемся открыть ожидается карта точка необработанный файл.
Мы видим здесь, что мы используем постоянная имя файла сырье подчеркивания,
которые здесь у нас есть хэш определяется как карта точка в сыром виде.
ОК.
>> Таким образом, мы должны убедиться, что это успешно открыт, потому что, если он
не, то мы должны предупредить пользователя.
Но если предположить, что он сделал, мы теперь собирается объявить буфер размером JPEG
длины имени файла.
Так что это будет буфер, который мы собираемся Sprintf в.
>> Так что же такое JPEG файла Длина имени?
Здесь, наверху, мы видим, что это хэш определяется как восемь.
Так почему восемь?
Ну данный файл будет называться что-то вроде нулевого нулевой нулю.
JPG, а затем мы должны обратную косую черту нулевой.
Поэтому нам нужен буфер, который может хранить восьми символов.
Теперь мы собираемся есть счетчик Вот собирается отслеживать
Номер в формате JPEG мы нашли.
>> И, наконец, мы собираемся иметь Файл JPEG, который изначально нулевой
которая будет в настоящее время открыть файл, что мы пишем, чтобы.
Теперь мы собираемся, чтобы иметь дополнительный буфер.
Это не то же самое, как наш Sprintf буфер, где этот буфер один
что мы читаем в данных с карты точка в сыром виде.
>> Таким образом, буфер будет из неподписанные символы, которые вы можете
в основном только рассматривать нас байт, и это будет размера размера блока
где, как мы говорим вам, размер блока 512.
Так в формате JPEG можно лечить все в виде блоков по 512 байт.
>> Теперь мы собираемся петли в течение всего файла.
Мы собираемся е читать в нашей буфера а одиночные раз размер блока от
карта точка необработанный файл.
Теперь что же е читать вернуться?
Она возвращает количество элементов что он успешно читал.
Так что, если ему удалось прочитать 512 байт, то мы хотим видеть, было ли это
JPEG или написать это в файл JPEG.
И если это не вернулись 512 байт, то либо файл закончилась
этом случае мы будем вырваться из у петля, или есть какая-то ошибка
в этом случае мы также вырваться из у петли, но мы будем хотите сообщить
что что-то пошло не так.
>> ОК.
Так если предположить, что мы успешно читать в 512 байт, мы хотим первой проверки
сделать, что эти байты, что мы только что прочитал в начать JPEG.
Так что если есть заголовок JPEG нашего буфера.
Теперь, что это такое заголовок JPEG делаешь?
Давайте посмотрим.
>> Здесь, наверху, мы видим, что эта функция возвращение быка, и, что бык -
ну вот, мы проверяем, чтобы убедиться, Заголовок нулю равна эту константу и
заголовок один равняется эту константу и Заголовок два равняется эту константу,
Заголовок три равно это или это постоянная, где все эти константы
просто хэш определяется прямо здесь и именно то, что мы говорили, в спецификации
что JPEG начинается с.
И поэтому эта функция просто будет вернуться верно, если этот буфер представляет
начало нового JPEG и в противном случае.
>> ОК.
Так что, если это действительно представляет новую JPEG, то сначала мы хотели, чтобы проверить, если
Файл JPEG не равна нуль, в этом случае мы закрыть его.
И так почему мы должны проверить чтобы увидеть, если это не пустой?
Ну самый первый JPEG, что мы найти мы не будем уже есть
открыть файл JPEG.
Так вот, если мы пытаемся закрыть это, то мы не делаем что-то совсем верно.
>> Но каждый последующий JPEG, что мы открываем, мы хотим, чтобы закрыть
предыдущий файл.
Так что теперь мы собираемся использовать Sprintf как мы сказал прежде, где мы используем
Имя файла буфера JPEG.
И мы собираемся использовать файл JPEG назвать формат, как наш формат.
И что это такое?
Здесь, наверху, мы видим, что это процентов нуля 3D.JPEG где ноль три просто
говорит, что мы будем использовать три целых для этого заполняются нулями.
Так что это, как мы получим ноль ноль one.JPEG и нулевой 10.jpeg и так далее.
>> Мы собираемся использовать Sprintf.
И целое число, которое мы вставки в строка онемение в формате JPEG
восстановлены, который первоначально нулю.
Таким образом, первый файл, открытый собирается быть ноль ноль ноль точка JPEG.
А потом мы увеличивая его так следующий файл мы открываем будет ноль-ноль
одна точка JPEG и мы будем увеличивать его снова так что это будет ноль ноль два точка
JPEG и так далее.
>> Хорошо.
Так что теперь внутри файла JPEG назвать, у нас есть имя
файл, который мы хотим.
Мы можем е открыть этот файл для записи.
ОК.
И еще раз, мы должны проверить, чтобы сделать уверены, что файл успешно
открыл, так как если это было не так, то есть какая-то ошибка.
>> Так что теперь мы получили в прошлом это часть JPEG.
И вот, мы видим, что мы собираемся для записи в формате JPEG.
Но мы сначала должны эту проверку в котором говорится, если файл JPEG не равен NULL.
Зачем нам это?
Ну файла JPEG равна нуль, когда мы В настоящее время есть открытая JPEG.
>> Что делать, если карта точка сырье начинается с кучей байтов,
не представляют JPEG?
Тогда мы собираемся хотите пропустить тех байт.
Если мы не имеем эту проверку, то мы собираюсь написать, чтобы в нераспечатанной упаковке
подать первые 512 байт карта что не есть хорошо.
ОК.
>> Так предполагая у нас есть открытый файл, то мы собираемся написать на этот файл
512 байт, что мы имеем в нашем буфере.
И мы в очередной раз проверяя, уверен, что 512 байт успешно
были написаны, потому что если они не были успешно записан, то что-то
пошло не так.
Мы будем закрывать файлы, печатать, что что-то пошло не так, и возвращение.
Предполагая, что все идет правильно, то мы будем держать цикл закрытия
старый файл, открыв новый файл, письмо данные в новый файл, и поэтому
, пока, наконец, это е не читать возвращает ноль, который средства
что файл делается.
>> Так что теперь чтения карт закончится, мы видеть, что мы собираемся е закрыть
последний файл, который мы должны были открыты, но мы проверяем, если файл JPEG
не равен NULL.
Ну е близко имеет смысл, потому как мы открываем файлы, мы закрываемся
предыдущий файл, но в самый последний файл, который мы открыли никогда не закрывается.
Так вот что это делает.
>> Но почему мы должны проверить на нуль?
Ну что делать, если карта точка сырье не сделал иметь единую JPEG внутри него?
В этом случае мы должны были бы никогда не открыл файл.
И если мы никогда не открыть файл, мы должны Не пытайтесь закрыть файл.
Так вот что эта проверка делает.
>> Теперь вот, как я уже сказал, мы могли бы вспыхнули что у петлю либо если
карта закончилась или если есть некоторые ошибки чтения с карты.
Так что это проверять, если было ошибка при чтении с карты, в
этом случае, мы будем говорить там было ошибка чтения.
Мы не хотим, пользователь думать все прошло успешно.
И мы будем возвращать одно на ошибку.
>> Наконец, мы е закрыть наш необработанный файл, наша карта точка сырье, чтобы показать, что
все прошло хорошо и возврат нулю и все тут.
>> Меня зовут Боб, и это было восстановить.
>> [Музыка играет]