문제

C#을 사용하여 파일 손상을 감지하는 방법을 찾고 있습니다. 어쩌면 이것은 너무 모호하지만 특정 유형의 부패를 찾고 있지는 않지만 파일이 일반적으로 손상되었음을 감지 할 수있는 방법이 있는지 궁금합니다. 이것이 가능하다면 누구든지 C#에서 어떻게 할 것인가? 감사.

도움이 되었습니까?

해결책

파일의 모습을 알고 있다면 알려진 좋은 MD5 해시와 비교할 수 있습니다.

그 외에도, 당신은 특정한 부패 패턴을 찾고 있다면. 예를 들어, 바이트 시퀀스는 일부 위치에 있어야하지만 엉망이되어 깃발이 될 수 있습니다. 그것은 모두 당신이 구체적으로 찾고있는 것에 달려 있습니다.

다른 팁

일반적인 방법은 같은 것을 사용하는 것입니다 CRC. 파일 내에 포함 된 CRC (일반적으로 파일에 추가)를 페이로드에서 계산 된 CRC와 비교합니다. 일치하지 않으면 데이터가 손상되었음을 알 수 있습니다.

파일 손상을 감지 할 수있는 API는 없습니다. 당신은 직접해야하며, 당신이 어떻게 해야하는지 당신의 필요에 따라 어떻게 달라야하는지에 달려 있습니다.

파일 시스템은 일반적 으로이 작업을 수행하지 않습니다. 내가 아는 한 세 가지 이유가 있습니다.

첫째, 모든 종류의 부패 방지 알고리즘에는 일부 유형의 체크섬이 포함되며, 이는 약간 비싼 계산입니다.

둘째, 부패의 원인은 두 가지 이상 있습니다. 드라이브 섹터가 나빠지면 파일이 손상 될 수 있지만 응용 프로그램에 의해 손상 될 수도 있습니다. 물론 해당 응용 프로그램이 파일을 수정하고 새 버전을 저장하면 다른 모든 단어를 '똥'으로 대체하더라도 새 버전은 항상 훌륭하다고 말할 것입니다.

셋째, 파일이 손상되었을 때 예외를 던지는 것 외에 다른 무엇을 할 수 있습니까? 파일을 확인하는 경우 파일이 고장 났음을 알 수있는 더 깨끗한 방법이 있지만 결국에는 여전히 고장이 발생했으며 Halt를 제외하고는 할 수있는 일이 많지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top