2

ファイルのデータを読み取る方法はありますが、ファイルの終わりを過ぎてもハード ドライブ上のデータを引き続き読み取る方法はありますか? 通常のファイル I/OI では fread() を使用できますが、明らかに、それはファイルの最後までしか読み取れません。また、Windows コンピューターでこれが必要であることを追加すると、有益な場合があります。

これを行う方法についての私のグーグル検索は、代わりに、通常の I/O に問題がある人など、EOF に関する無関係なトピックに関する結果を考え出すことです。

これは、作業中のテキスト ファイルのテキストの一部を誤って削除してしまい、丸 1 日かかる作業だったからです。私はたくさんのファイル回復に関することをグーグルで調べましたが、それはすべて削除されたファイルの回復に関するものであるようです。私の問題は、ファイルがまだそこにあるが、その情報の一部がないことです。そのデータの一部がまだ直接存在することを望んでいます現在マークされているファイルの終わりの後、他の場所で断片化されていないか、すでに要求されているか、上書きされていません。これに具体的に役立つプログラムが見つからないので、すぐに何かを補うことができることを願っています(関係する内容によっては、作業をやり直すほど実行できない場合があることは理解していますが、そうでないことを願っています)。

私が予測できる限り、私は正しくないかもしれませんが (よくわからないので助けを求めています)、3 つの可能性があります。

3 つのうち最悪の場合: ハード ドライブ全体への直接アクセスを可能にする Windows API 関数 (おそらく、メモリの関数に似ていますか? 私が経験したもの) を検索し、全体をスキャンして、まだ持っているデータを探す必要があります。ファイルからアクセスして、その後にあるものを見続けます。

2 番目: ファイルへのポインターを取得できますが、それでも HD への生のアクセスを取得する必要がありますが、少なくともファイルへのポインターは含まれていますか?

ベスト 3: 書き込みアクセス用にファイルを開き、最後までシークし、EOF を過ぎてより多くのスペースを要求する方法を書き込みます。実際に私が探しているものであるその場所の以前のデータであったガベージデータを取得しますか? そんなに単純なら素晴らしいのですが、失敗するとデータが失われるのでテストするのが怖いので、他の誰かがすでに知っていることを願っています. 問題の PC は、Windows の悲惨な詳細を知っている人にとって重要であれば、Vista Home Premium を実行しています。

これらの 3 つのいずれかがもっともらしいと思われますか? そうか否かにかかわらず、私は他の提案、特に私のばかげたアイデアよりも優れたもの、特に仕事を成し遂げるために使用する特定の機能への方向性があれば、オープンです (そして熱望しています)。

また、削除されたファイルを回復するだけでなく、このような状況で実際に機能し、無料で信頼できる回復プログラムについて実際に聞いたことがあれば、それも機能します.

ご協力いただきありがとうございます。

4

2 に答える 2

3

ハード ドライブの空き領域をスキャンし、そこからデータを回復するためのユーティリティを取得する必要がありPhotoRecますforemost。ただし、マシンを頻繁に使用している場合 (キャッシュにファイルを作成する Web ブラウジングであっても)、データは既に上書きされている可能性があります。回復ツールを同じハード ドライブに保存したり、同じ PC を使用してダウンロードしたりしないでくださいそれらを別のコンピューターから取得して USB デバイスに保存し、そのデバイスから実行します。

あなたの質問の概念的な内容に関しては、ファイルは抽象的なオブジェクトです。(実装によっては) おそらくファイルシステム/ディスクの「ブロックサイズ」の次の倍数までを除いて、「eof を過ぎた」データのようなものはありません。また、編集者がファイルを切り捨てて最初からすべてを新しく書き込んで「保存」した可能性も (非常に高い) 可能性があります。つまり、古いストレージと新しいストレージの間に必ずしも対応があるとは限りません。

于 2010-12-01T01:10:25.100 に答える
0

あなたの質問はあまり意味がありません-定義上、EOFの後のファイルには何もありません。さらに詳しく説明すると、ファイルで使用されている最後のバイトの後にディスク上にあるものをすべて読み取りたいようです。これは、ランダムなガベージ(未使用のスペース)または他のファイルである可能性があります。ただし、どちらの場合も、これは「EOF後のデータ」ではなく、ファイルの一部ではないディスク上の単なるデータです。ファイルシステムがたまたまそのデータをそのようにレイアウトしている場合、それが同じファイルの他の部分である可能性さえあります-一部のファイルシステムは、ディスク全体に一見ランダムな方法でブロックを分散させ、どのバイトがどのファイルに属しているかを理解する必要がありますファイルシステムのメタデータ。

于 2010-12-01T03:15:54.727 に答える