가끔 정리해야하는 C++ ofstream을 작성 중입니다. 쓰고있는 파일을 삭제하고 클래스를 삭제하고 정리해야합니다.C++ ofstream 삭제 및 정리
어떻게? (그것을 닫고 이름으로 삭제하는 것을 제외하고).
(적어도 파일은이 열렸다있는 의도 된 위치와 파일 이름으로 존재해서는 안 - 임시 파일 디렉토리는 확인 될 수있다)
가끔 정리해야하는 C++ ofstream을 작성 중입니다. 쓰고있는 파일을 삭제하고 클래스를 삭제하고 정리해야합니다.C++ ofstream 삭제 및 정리
어떻게? (그것을 닫고 이름으로 삭제하는 것을 제외하고).
(적어도 파일은이 열렸다있는 의도 된 위치와 파일 이름으로 존재해서는 안 - 임시 파일 디렉토리는 확인 될 수있다)
는 지금까지 내가 아는 한, 다른 방법이 없습니다. 파일을 닫고 remove
과 이름을 사용하십시오.
아마도 이것은 일종의 RAII 클래스에서 가장 잘 처리됩니다. 나는 정기적으로 OutputFile
클래스를 사용하는데, 암시 적으로 을 std::ostream&
(출력용)으로 변환합니다. 생성자는 파일 이름으로 을 사용합니다. 파일을 닫는 함수는 이지만, 소멸자가 commit
전에 호출되면 은 파일을 닫을뿐만 아니라 파일을 닫습니다. 마찬가지로, (그 이름을 가진 기존의 파일을 삭제) filename.new
— commit
다음 filename
filename.bak
에 이름을 변경 열립니다 UpdateFile
클래스 및 이동 filename
에 filename.new
가있다. 그리고 소멸자는 filename.new
을 삭제합니다. (내용에는 변화가 없습니다 경우 파일 타임 스탬프가 변경되지 않도록 새로운 내용이 있는지 변형 검사, commit
에서 이전과 다릅니다.)
는 안전하게 여전히 열려있는 파일을 이동/삭제할 수 없습니다 . – us2012
내가 말한 것은 내가 닫을 때까지 파일이 임시 이름을 가질 수 있다는 것입니다 (Visual C++ 버전에서는 그렇게 보입니다). 내가 거기서 그냥 떠날 수 있다면, 괜찮아. – user1987442