>> [音楽再生]
>> ROBボーデン：こんにちは。
私はロブだし、のはそれを期待しましょう このソリューションは、あなたを置くことができます
回復への道。
それではを始めましょう。
>> 我々はすぐに私たちがしていることがわかります ちょうど私達がしていることを確認します
正しくリカバリ]を使用。
だから、使い方はちょうど何かであるべき ドットスラッシュのように回復します。
>> 今、私たちは期待を開くしようとしている カードは、RAWファイルに点在しています。
私達は私達が使用していることがわかり 一定の生のアンダースコアファイル名、
これまでここでは、ハッシュを持っている カードは未加工のドットとして定義されています。
[OK]をクリックします。
>> だから我々は確認していることを確認する必要があり オープンに成功のためならば
、その後、我々はユーザーに警告する必要がありませんでした。
しかし、それがなかったと仮定して、我々は今だ サイズのJPEGのバッファを宣言するだろう
ファイル名の長さ。
だから、これはバッファされようとしていること 私たちはにはsprintfするつもりだ。
>> だから、JPEGファイル名の長さは何ですか？
ここに、我々はそれがだと見ること 8のように定義されたハッシュ。
では、なぜ8？
さて、与えられたファイルは、名前が付けられます ゼロゼロゼロのようなもの。
JPG、その後、我々は、バックスラッシュゼロを必要としています。
だから我々は可能なバッファを必要とする 8文字を格納。
今、私たちはだカウンターを持っているつもりです を追跡しようとして
数字JPEGファイル、我々が見つかりました。
>> そして最後に、我々は持っているつもりです nullに初期化されたJPEGファイル
現在であることを行っている 我々が書いている開いているファイル。
今、私たちは持っているつもりです 追加のバッファ。
これが私たちのsprintfと同じではありません このバッファは1であるバッファ
私たちは、データに読んでいることを カードからの生点在しています。
>> だから、バッファがあることになるだろう 符号なしの文字、そのことができます
基本的にはちょうど私達にバイトを扱い、それがだ サイズブロ​​ックサイズであることを行って
ここで、私たちはあなたを伝えるように、 ブロックサイズは512である。
だから、JPEGファイルは、あなたはすべてを扱うことができます 512バイトのブロックとして。
>> 今、私たちはループするつもりだ ファイル全体にわたる。
私たちは、バッファに読み込むFになるだろう 単一バイトのブロックサイズの倍
カードは、RAWファイルに点在しています。
今Fが戻って何を読んでいますか？
これは、項目の数を返します。 それが正常に読み込まれていること。
それは、次に、512バイトを読み取ることに成功しそうである場合 我々は、これがあったかどうかを見てみたい
JPEGまたはそれは、JPEGファイルに書き込む。
そして、それは512バイトを返さなかった場合には、 そのファイルのいずれかで終了した
その場合、我々はYから抜け出すだろう ループ、またはエラーのいくつかの並べ替えがあります
その場合、我々はまた、から抜け出すだろう Yループが、我々は報告したいと思う
その何かが間違っていた。
>> [OK]をクリックします。
だから我々は正常に読み込まれていることを想定し 512バイトでは、まずチェックしたい
そのこれらのバイトは、その我作る ただ、JPEGを開始読み込む。
私たちのバッファのJPEGヘッダであるかのようにします。
今では、JPEGヘッダに何をやっている？
それでは見てみましょう。
>> ここに、我々は、この機能があることがわかり 牛を返すと、その雄牛 -
ここにも、私達はかどうかを確認している ヘッダーゼロこの定数に等しく、
ヘッダー1は、この定数に等しく、 ヘッダー2は、この定数に等しい
ヘッダ3はこれか、これを等しく これらすべての定数であり、定
ちょうどここで定義されたハッシュしている まさに我々がspecであなたに言った
JPEGが始まること。
ので、この機能は単にしようとしている このバッファが表す場合はtrueを返す
新しいJPEGの開始 そうでない場合はfalse。
>> [OK]をクリックします。
これが新しいJPEGを表現している場合は、 その後、我々は最初のかどうかを確認したい
JPEGファイルは、ヌルに等しくない その場合、我々はそれを閉じます。
そして、なぜ、我々は確認する必要があります それがnullでないかどうかを確認するには？
まあ我々は非常に最初のJPEG 我々はすでに持っていることはありません
オープンJPEGファイル。
だから、我々はそれをクローズしようとすると、 我々はかなり右に何かをやっていない。
>> しかし、すべてのその後のJPEGこと 我々は開いて、我々は閉じるようにします
前のファイル。
だから今我々は、我々としてはsprintfを使用するつもりだ 我々は使用している場合、前に言った
JPEGファイル名をバッファ。
そして、我々はJPEGファイルを使用するつもりだ 私たちの形式としてフォーマットに名前を付けます。
そして、それは何ですか？
ここに、我々はそれがパーセントゼロであることを参照してください。 3D.JPEGちょうどゼロ3
我々は3の整数を使用しますと言っている このため、ゼロでパディング。
だから、これは我々がゼロにゼロを買ってあげる方法です one.JPEGなどゼロ見られた回数や。
>> 私たちは、sprintfのを使用するつもりだ。
そして、我々は挿入している整数 文字列にしびれJPEGファイルである
もともとゼロである、回復した。
だから、オープンした最初のファイルが起こっている ゼロゼロゼロドットのJPEGであると。
ようにして、我々はそれをインクリメントしている 我々は次に開いたファイルはゼロでゼロになります
1ドットのJPEG、我々はそれをインクリメントします 再びので、ゼロ、ゼロ2点になるでしょう
というように、JPEGや。
>> わかりました。
だから今JPEGファイルの内部 名前、我々の名前を持っている
私たちが望むファイル。
我々は、F書き込み用にそのファイルを開くことができます。
[OK]をクリックします。
再び、我々は作るためにチェックする必要があります 成功したファイルことを確認してください
そして、それがなかった場合から開か いくつかのエラーが発生しました。
>> だから今我々は、過去得ている これは、JPEG部である。
そしてここで、我々は我々が行っている参照してください。 JPEGに書き込む。
しかし、我々は最初に述べています、このチェックを持っている JPEGファイルが等しくないNULLがない場合。
なぜそれが必要なのでしょうか？
ときに我々だけでなく、JPEGファイルはNULLに等しい 現在開いて、JPEGを持っています。
>> どのようなカードドット生に起動した場合 そのバイトの束と
JPEGを表すものではありません？
その後、我々はするつもりだ それらのバイトをスキップ。
我々は、このチェックを持っていない場合、我々はしている 未開封に書くつもり
最初の512バイトを提出 良くないカード。
[OK]をクリックします。
>> それでは、我々はファイルを開いていると仮定して 我々はそのファイルへの書き込みをしようとしている
我々は我々のバッファを持っている512バイト。
そして、我々は再び作るためにチェックしている 首尾よく512バイトことを確認してください
彼らがいなかった場合、以下の原因書かれていた 正常に書き込まれ、その後何か
間違っていた。
我々は、我々のファイルを閉じる印刷します 何かが間違っていた、と返す。
すべてがその後、正常に行くと仮定して 我々はクローズループしておこう
古いファイル、新しいファイルを開く、書き込み ので、新しいファイルにデータ、および
最後に、このFが読むまでに ゼロを返す手段
ファイルが実行されていること。
>> だから今カードの読み取りが終わったので、 我々は、Fクローズしようとしていることがわかります
我々は開いていたが、最後のファイル 我々はチェックしている場合は、JPEGファイル
NULLと等しくない。
さて、Fの近くには、理由として理にかなっている 我々はクローズしている、ファイルをオープンする
前のファイルが、非常に最後の 我々は開いたファイルを閉じれることは決してありません。
だから、これが何をしているかだ。
>> しかし、なぜ我々はnullをチェックする必要がありますか？
さてどのような場合は、カードのドット生はしませんでした その中の一つのJPEGがありますか？
その場合、我々はならない ファイルを開いたことはありません。
我々は、ファイルを開いたことがない場合、我々はすべき そのファイルをクローズしようとしない。
だから、このチェックが何をしているかだ。
>> 私が前に言ったように今ここに、我々は可能性 そのYループのどちらかのを壊れている
カードが存在する場合、エンドまたはしました カードからの読み込み多少の誤差はご了承ください。
だから、これがあったかどうかを確認してい で、カードからの読み込みエラー
その場合、私たちはそこに言うよ エラー読んでいた。
我々は、ユーザーが考えたくない すべてが成功しました。
そして、我々は、エラーのために1を返します。
>> 最後に、我々は、F私たちの生のファイルを閉じます、 私たちのカードは、それを示すために、生のドット
すべてがうまくいったとリターン ゼロ、それはそれだ。
>> 私の名前はロブであり、これは回復した。
>> [音楽再生]