2017-04-06 78 views
0

我在想什麼是在我的應用程序的OSX版本中存儲臨時文件的最佳位置。OSX中的標準臨時目錄

明顯答案/tmp目錄,因爲它在啓動清理和我的應用程序可能需要重新啓動後也繼續被中斷的工作是不好的。

我也嘗試使用環境變量TMPDIR 指出的路徑,即通過NSTemporaryDirectory(),改變每一個引導和是一樣的東西返回相同:

/var/folders/wx/p4rqqs8d1ws0wlpx9dkwsh_80000gn/T/ 

..而且這個路徑的內容在啓動時被刪除。

有一個標準的路徑,我可以放置一些臨時文件,恢復彈性,或者我必須發明自己的解決方案(即〜/ Library/myapplication/temp)?

在Windows中,我使用GetTempPath(),它的工作方式應該如此。

回答

2

我發現我的回答詢問這裏,這個優秀的文章在谷歌上搜索才更努力,我做到了:

https://www.cocoawithlove.com/2009/07/temporary-files-and-folders-in-cocoa.html

閱讀的文章和各種選項我發現緩存目錄(NSCachesDirectory)是正確的地方存儲我的文件。將它們放在「應用程序支持」中將使它們被時間機器備份。

因此,這裏是我做過什麼:

const char *get_temporary_dir() 
{ 
    NSString *path = nil; 
    NSString *bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    if ([paths count]) { 
     path = [[paths objectAtIndex:0] stringByAppendingPathComponent:bundleName]; 
    } else { 
     path = NSTemporaryDirectory(); 
     path = [path stringByAppendingPathComponent:bundleName]; 
    } 
    return [path UTF8String]; 
} 

...我不知道,如果退回到標準的,可刪除的,需要的目錄,但它不會傷害!

0

您應該使用「應用程序支持目錄」 - 這通常是~/Library/Application Support或沙盒應用程序及其容器內的等效內容。

要獲取此目錄的URL,請使用URLForDirectory:inDomain:appropriateForURL:create:error:作爲第一個參數NSApplicationSupportDirectory傳遞。

在這個目錄中,您需要創建一個僅用於您的應用程序的目錄,使用您的應用程序的包ID是命名此目錄的常用策略。

此目錄旨在存儲您的應用程序所需的文件,但不是您用戶的文件。