2009-11-25 6 views
1

누구나 내가 읽기 및 쓰기 용 파일 열기 (예 : 파일 열기, 닫기 및 다시 열기)와 달리 파일을 여는 프로 및 죄수를 다루는 몇 가지 토론을 할 수 있습니까? 쓰기. 나는 기쁨없이 심층적 인 정보를 찾으려고 노력했다.읽기 및 쓰기 용 파일 열기의 이점

많은 감사

그것은 당신이 무슨 일을하는지에 따라 달라집니다

답변

4

. 우연히 파일을 잘라내거나 실수로 데이터의 일부를 덮어 쓰는 것이 매우 쉽기 때문에 읽기 및 쓰기 용 열기는 정확하고 일관성있게하기가 더 어려울 수 있습니다.

실제로 읽기 및 쓰기 (아마도 완전한 대체)가 실제로 옵션 인 경우 두 개의 개별 파일 열기가 더 간단 할 수도 있지만 새 파일에 쓰기를 고려하고 이름이 바뀌면 (예 : 프로그래밍 오류!) 이전 데이터가 손실되지 않는 쓰기를 중단합니다.

읽기/쓰기 용으로 열려면 문서를주의 깊게 읽어야합니다. 따라서 파일을 열 때 자르지 않고 찾기 및 지우기 기능을 사용하십시오. 바이너리 모드로 열지 않는 한, 이전의 tell에 의해 반환 된 위치를 찾기 위해서만 안전하게 패스 할 수 있습니다.

1

속도.

하지만 당신이하는 일에 따라 다릅니다.

많은 작은 글을 쓰려면 오픈으로하는 것이 좋습니다.
큰 데이터 덩어리를 작성하려는 경우 필요할 때마다 데이터를로드하는 것이 좋습니다.

같은 내용이 읽혀집니다.

3

나는 경쟁 조건이라는 가장 그럴듯한 이유를 제안합니다.

두 명의 사용자가 동일한 파일에 액세스하여 편집하려고한다고 가정합니다. 사용자 A가 파일을 열고 읽은 다음 닫습니다. 사용자 B는 사용자 A가 쓰기 기회를 가지기 전에 함께 왔으며 파일을 읽습니다.

사용자 A가 파일을 열어두면 사용자 B가 파일을 열어 읽을 수 없습니다. 가능한 경우 경쟁 조건을 피할 수 있기 때문에 많은 경우 이것이 바람직한 행동입니다. 사용자 A는 사용자 A가 파일을 처리 할 때까지 파일에 액세스 할 수 없습니다.

또는 사용자 A와 B가 파일에서 아무 것도 다시 쓰지 않고 추가 만한다고 가정하고 파일의 순서는 중요하지 않습니다 (로깅이 좋은 예입니다). 이 경우 사용자 A가 현재 사용자 B가 작성한 내용이 사용자 A가 현재 수행하고있는 내용에 관심이 없기 전에 파일에 대한 액세스 권한을 사용자 B에게 부여하는 것이 좋습니다.

분명히 두 경우 모두 경쟁 조건을 처리하는 방법과 관련되어 있으므로 먼저 해당 문제에 대해 생각해야합니다. 일반적으로 차단 동작은 경쟁 조건으로 인해 프로그램이 손상되는 것을 방지하므로 해당 동작을 기본값으로 사용하지만 대안을 알고 있어야합니다.

+1

사이를 전환하는 동안 당신이 있음을 지적 아마 가치가 그래서 어떤 OS가 언급되지 않았다 스트림을 플러시 필요가있다 Windows는 동시 액세스를 방지하기 위해 열린 파일을 잠그는 것을 기본값으로하지만 유닉스 계열 시스템은 그렇지 않습니다. – SimonJ

+0

잠금을 지원하는 메커니즘이 많이 있습니다 (기본값은 맞지만). 잠금이 아닌 경우에는 경쟁 조건을 처리하기 위해 dnotify 메커니즘 (Linux 2.4 이상)을 사용해야합니다. – tzenes

1

아무도 언급하지 않았으므로 을 동시에 읽으므로 분명히 설명 할 것입니다.

다양한 오프셋에서 레코드를 읽고, 추가하고, 삭제하고, 바꾸고, 인덱스를 업데이트하려는 ISAM 파일을 고려하십시오. 파일을 열거 나 닫지 않고 적절한 위치를 찾아서 훨씬 쉽게 할 수 있습니다!

1

당신이 읽기와 쓰기를 위해 파일을 열 경우 알아서해야 할 또 다른 점은 읽기 및 쓰기 작업