동일한 파일에서 2 개 (또는 그 이상)의 FileOutputStream을 동시에 열 때 어떻게됩니까?Windows에서 Java로 동시 파일 쓰기
일부 플랫폼, 특히, 파일이 한 번에 하나의 FileOutputStream (또는 그 외의 파일 기입 객체)로 쓰기 위해 열 수 다음 Java API
이 말한다.
큰 파일 (각각 다른 파일)을 읽는 두 개의 스레드가 있고 동일한 출력 파일에 쓰기 때문에 Windows가 그러한 플랫폼이 아니라고 생각합니다. 예외가 발생하지 않고 파일이 만들어지고 두 입력 파일의 청크가 포함 된 것처럼 보입니다.
사이드 질문 :
- 역시 유닉스에이 사실인가요?
- 그리고 동작이 동일하기를 원하기 때문에 (실제로 한 스레드가 올바르게 쓰고 다른 스레드가 충돌 경고를 받길 원합니다) 어떻게 파일이 이미 쓰기 위해 열려 있는지 확인할 수 있습니까?
하지만 쓰기를 할 때마다 차단하고 싶지 않습니다. 누군가 내가 이미 쓰고 싶은 파일에 이미 쓰고 있다면 차단하고 싶습니다. 사실, 나는 전혀 차단하고 싶지 않습니다. 두 번째 스레드에게 그가 쓸 수 없다고 말하고 클라이언트가 추가 작업을 결정하도록합니다. –
CHECK 그 API를 잠급니다. 자물쇠를 검사하여 다른 사람이 이미 자물쇠를 잠그고 있는지 확인한 다음 (예 : 빵이 아닌 경우) 어떻게해야할지 결정할 수 있습니다. –