0

私はc++ cliを使用しています。ファイルをスキャンして、pe パッカーによって圧縮されているかどうかを確認しようとしています。

ここに問題があります

私のコードをtryブロックに入れない場合、20MB以上のファイルサイズをスキャンしますが、ファイルがシステムファイル(ntuser.datなど)の場合、ファイルにアクセスできないというエラーが表示されるという問題があります。そのようなファイルをスキャンする必要がないため、これで問題ありません。コードを try ブロックに入れて、そのエラーを排除します。問題は、その 20 MB のファイルに到達すると、スキャンする代わりにスキップすることです。try ブロックが大きなファイルをスキップする理由がわかりません。ファイルをスキップしない唯一の方法は、大きなファイルがスキャンされる最初のファイルである場合ですが、複数の大きなファイルをスキャンするため、これは役に立ちません。

ここにコードがあります

try
{
    FileStream^ fs2 = gcnew FileStream(line, FileMode::Open, FileAccess::Read, FileShare::ReadWrite);

    BinaryReader^ br = gcnew BinaryReader(fs2);

    array<Byte>^writeArray = br->ReadBytes(br->BaseStream->Length);

    fs2->Close();

    String^ datafile = BitConverter::ToString(writeArray);
    datafile = datafile->Replace("-","");

    if (datafile->Contains("55505830")) {
        listBox1->Items->Add(line);
    }   
}
catch (...)
{

}

テキストファイルから次のファイルを読み込むループ部分は問題ないので入れませんでした。

では、大きなファイルをスキャンしてシステム ファイルを無視するにはどうすればよいでしょうか。

おそらくキャッチ例外を変更する必要がありますか。

ありがとうございました

4

1 に答える 1