2013-08-12 2 views
-1

시스템 전원이 꺼져 있거나 다른 응용 프로그램이 파일을 읽는 등의 예외가 발생하는 경우 csv 파일을 업데이트하는 중 문제가 발생합니다 (쓰기). 이 경우 읽기 측에서 CSV 파일이 완전히 업데이트되었는지 여부를 판단 할 수 없습니다. 이 문제를 해결할 수있는 기법 (형식)이 있습니까? 파일을 성공적으로 업데이트 한 경우 EOF (xxxx)와 같은 키워드를 추가하여 조사 할 수 있지만 PLZ를 표준화한다는 아이디어가 있습니까?csv 파일이 성공적으로 업데이트되었는지 확인

답변

2

파일 끝에 체크섬 또는 CRC를 추가하십시오. 이렇게하면 파일을 쓰는 동안 오류가 발생했는지 여부를 감지 할 수 있습니다.

파일을 다시 읽을 때 체크섬을 계산하고 저장된 체크섬과 비교하십시오. 파일이 다를 경우 파일이 잘못되었습니다.

그러나 이렇게하면 파일을 손으로 수정하기가 어려워집니다. 파일을 직접 작성하거나 수정하지 않는 경우에만이 기능을 사용하는 것이 좋습니다.

편집 :

체크섬 당신이 상호 교환 잘못 사용 된 용어를 듣게 될 것입니다 불구하고 CRC 다릅니다. 체크섬은 일부 데이터 단위의 모든 데이터를 가져와 함께 추가하는 것입니다. CRC는 데이터를 가져 와서 비트 조작을 수행합니다. 체크섬은 더 쉽고 계산이 빠르지 만 CRC보다 오탐 (false positive)이 많으므로 덜 강력합니다.

두 가지 모두 데이터 무결성을 확인하는 데 사용되며 일반적으로 네트워크를 통한 데이터 전송에 사용됩니다. RAM에서 디스크로 데이터를 "스트리밍"하기 때문에이 기능이 잘 작동합니다. 전송시 오류가 발생하면 체크섬은이를 확인하는 자연스러운 방법입니다.

CheckedOutputStream을 만듭니다. 바이트를 CSV에 기록 할 때 체크섬을 유지합니다. 파일 작성이 끝나면 CheckedOutputStream에서 체크섬을 검색하여 파일에 씁니다. 그런 다음 스트림을 닫습니다.

데이터를 다시 읽을 때 CheckedInputStream을 사용하십시오. 그런 다음 파일을 읽을 때 계산 된 체크섬을 파일에 저장된 체크섬과 비교하십시오. 동일하면 파일에 오류가 없을 가능성이 매우 높습니다. 체크섬이나 CRC를 사용하면 오 탐지 (false positive)가 발생할 가능성이 매우 적기 때문에 대개 가능성이 높습니다.

+0

안녕하세요, 괜찮아요,하지만 파일 plz에 체크섬을 삽입하는 방법에 대한 링크를 제공 할 수 있습니까? 웹의 연구 결과는 "파일을 전송하는 동안 오류 검사에 사용됩니다."(http : //www.roseindia.net/java/beginners/ChecksumCRC32.shtml), 업데이트하는 동안 파일이 예외를 throw하지 않았는지 확인하지 않습니다. 필자는 파일 체크섬 tks를 처음 사용하게되었습니다! –

+0

답변을 편집했습니다. –

+0

당신이 준 링크는 모든 것을 아주 명확하게 설명하고 심지어 코드 예제를 가지고있는 것처럼 보입니다. 위의 철저한 설명을 원하면 더 명확한 정보를 원하십니까? –

관련 문제