2012-09-06 5 views
1

텍스트 파일 (약 50gbs 상당)에서 읽는 Java 응용 프로그램이 있습니다. 각 파일은 5kb에서 35mb 사이입니다. 파일 자체는 필요에 따라 실행되지만 약 1 주일 만에 실행 된 다른 Java 응용 프로그램에서 작성됩니다. 파일은 다음과 같은 구분 기호를 사용합니다.SSD 손상으로 txt 파일의 문자가 바뀔 수 있습니까?

| ; ,

내 응용 프로그램은 잘 돌아 갔지만 최근에는 숫자 형식 예외와 함께 오류가 발생하기 시작했습니다.

내 질문은 이것이다, 10 | 시험에 나는 쉼표 중 하나가 $

0.43916,22970.43081,6.76182 $ 527640691.38786에 뒤집어 된 것을 알 수 있습니다. 드라이브 손상 때문에이 "뒤집기"가 일어날 가능성이 있습니까? 전체 파일에서 단 1 자만 바뀌어 버리는 것 같습니다. 파일의 타임 스탬프는 다른 프로그램에서 실수로 수정하지 않았 음을 확인합니다.

나는이 머리에 내 머리를 긁적니다.

+1

파일을 생성하는 응용 프로그램에 잘못된 값이 파일에 기록되게하는 버그가 있습니다 (특히 변경된 단일 문자이기 때문에). 드라이브 손상은 대부분 더 많은 데이터에 영향을 미칩니다. (이것은 실제로 프로그래밍 문제가 아니며, OS/하드웨어 질문이 더 많습니다. 여기서는 주제가 아닙니다.) –

+0

하드웨어 또는 컴파일러 버그 (또는 우주 광선으로부터의 비트 플립)로 인한 버그가 그렇게 발생합니다 거의 문제에 대해 비난 받아서는 안됩니다. 필자는 10 년 이상 엔터프라이즈 형 Java 코드를 개발해 왔으며 이러한 문제 중 하나가 버그의 근본 원인이되지 않았습니다 (XML 프로세서 문제를 제외하고 :-)). 다시 말하지만, 이것은 실리콘이 아닌 회전하는 금속으로 이루어졌습니다. –

답변

1

드라이브가 손상되었음을 나타냅니다. RK a CHKDISK 그리고 오류가 떠올랐다.

2

분명히 가능합니다. 사실, (00100100)과 $ (00101100) 사이에서 한 비트 만 변경해야합니다. 일반적으로 디스크에는 체크섬 및 오류 수정 코드가 내장되어있어 손상이 발생하면이를 바로 잡을 수 있거나 적어도 발생했다는 사실을 알릴 수 있습니다. 그러나 여전히 침묵하는 부패는 전례가 없으며 SSD와 기존의 하드 드라이브에서 발생할 가능성이 더 큽니다.

아직 봐야 할 첫 번째 장소는 확실히 파일을 생성 한 코드입니다.

+2

나는 예측 가능하고 규칙적인 방식으로 * 매우 * 가능성이 낮을 것이라고 말하고 싶습니다. –