파일의 이름을 바꾸는 데 문제가 있습니다. 기존 파일의 여러 줄을 삭제하려고 시도하고 새 파일로 바꿉니다.이름 바꾸기 파일이 작동하지 않는 이유는 무엇입니까?
string line;
ifstream myfile(filename);
ofstream outfile;
outfile.open(filename.append(".new"));
if(myfile.is_open()) {
//loop here that runs through code and calles
//outfile << line; repeatedly
}
int test = rename(filename.append(".new").c_str(),filename.c_str());
if (test == 0) cout << "Success";
else cout << "Failure";
내가 온라인에서 본 것으로부터,이 새로운 문서를 작성하고, 채우고, 원본을 업데이트 된 것으로 바꾸기를 기대합니다.
내가 잘못 본 사람이 있습니까?
새 파일의 이름을 바꾸기 전에 닫으시겠습니까? – usr2564301
(가능하면 작업 할 때조차도) 하드 링크가있는 경우이 작업이 실패 할 수 있습니다. 기존 파일을 "삭제"하면 파일 이름의 링크 만 내용으로 삭제합니다. 동일한 콘텐츠에 연결된 다른 이름은 새 파일이 아닌 이전 파일에 계속 연결됩니다. –
Windows에서 실행 중입니까? 그렇다면 이름 바꾸기를 수행하기 전에 이전 파일에 열려있는 핸들을 모두 닫아야합니다. 그렇지 않으면'ERROR_SHARING_VIOLATION'으로 실패합니다. 또는 호환되는 공유 모드로 파일을 열지 만 C++'iostream' API를 버려서 ['_fsopen()'] (http://msdn.microsoft.com/en-us/library/)와 같은 기능을 선호해야합니다. 8f30b0db.aspx) 또는 원시 시스템 호출 ['CreateFile()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx). –