2012-05-25 4 views
0

임시 파일을 MAC의 지정된 폴더에 만들어야합니다. 그러나 올바른 위치에 폴더를 만들 수 있지만 내부에 파일을 만들 수는 없습니다. 폴더를 만드는 동안 파일 권한으로 777을 전달했지만 파일을 만들 권한이 없다는 오류가 나타납니다. 아래 코드를 찾으십시오. 이 문제는 MAC에서만 발생합니다. Windows에서는 예상대로 실행됩니다. 문제가 무엇인지 알려주세요.원하는 디렉토리에 임시 파일을 만들 수 없습니다.

wxString curDir = SeeWorkingDir() + wxT("Temp\\"); //Gets the working directory 

    if(!wxFileName::DirExists(curDir)) //Checks if directory exists 
    wxFileName::Mkdir(curDir, 0777, wxPATH_MKDIR_FULL); // creates the directory 

    wxString jobcopy = wxFileName::CreateTempFileName(curDir); // should create temp file 
+0

CURDIR 첫 번째 문은 파일을 생성하고, 또한 MAC의 경우가 될 것이다있다 /users/...../../Temp/ 될 것입니다 후를 SeeWorkingDir() + wxT ("Temp /") – Darzen

+0

실제로 폴더를 만들었나요 아니면 이미 만들어 졌습니까? 폴더의 실제 사용 권한을 확인 했습니까? – PauliL

+0

@PauliL 디렉토리를 직접 만들었습니다. 생성하는 동안 나는 전체 권한을 얻기 위해 매개 변수 777을 전달했습니다. – Darzen

답변

1

나는 당신의 "SeeWorkingDir()"함수가 반환하는 것을 전혀 생각이 없다, 그러나 응용 프로그램 디렉토리를 반환 않다면 당신은 거기에 아무것도를 작성해서는 안됩니다.

진정으로는 "/tmp/"디렉토리처럼 쓸 수있는 Macintosh에서 어딘가의 경로로 "SeeWorkingDir()"를 대체하지?

+0

감사합니다. Michael. 작업 디렉토리는 MAC의 임시 영역을 반환합니다. 이것은 "users/darzen/library/cache/project /와 비슷합니다. 그 안에 – Darzen

+1

의 Temp 디렉토리를 만듭니다."/ Users/michael/Library/Cache /' "*** 내 *** 컴퓨터에 존재하지 않습니다. 사용자의 컴퓨터에 무엇이 존재할 것이라고 생각하게합니까? 임시 파일을 작성하는 경우, 기록 될 것으로 예상되는 곳에 기록하십시오."/ tmp' "는 여러분이 작성한 것과 같은 C/C++ 코드를위한 편리한 장소입니다."~/Library/Caches "의 어딘가에 Objective C/native 코드를위한 적절한 장소가 있습니다 –

+0

users/Darzen/Library/Caches/project/저는 있습니다 죄송합니다. 캐시에서 's'를 찾지 못했습니다. – Darzen

0

SeeWorkingDir() 함수의 기능을 설명하지 않았습니다.

아마도 파일을 저장할 디렉토리를 지정하려면 wxFileName::GetTempDir을 사용해야합니다. 이것은 플랫폼에 독립적이어야합니다.

또는 wxFileName :: CreateTempFileName (curDir) 호출에서 fileTemp 매개 변수를 지정하여 파일을 직접 열 수 있습니다.

는 문서를 참조하십시오 : wxWidgets 2.8.12 - wxFileName

관련 문제