2017-04-06 10 views
0

私は、アプリケーションのOSXバージョンに一時ファイルを保存する場所が何であるかを把握しようとしています。それは、ブート時にクリーンアップされているのでOSXの標準的な一時ディレクトリ

明らか答え/tmpのは良くありませんし、私のアプリケーションは、再起動後も中断したジョブを続行する必要があるかもしれません。

私はTMPDIR変数環境が指すパスを使用することも試みたが、それは起動のたびに変更し、のようなものであるNSTemporaryDirectory()、によって返さ同じです:

/var/folders/wx/p4rqqs8d1ws0wlpx9dkwsh_80000gn/T/ 

..このパスの内容はブート時に削除されます。

一時的なファイルを配置したり、再起動したりするための標準的なパスがありますか、自分のソリューション(〜/ Library/myapplication/temp)を作成する必要がありますか?

Windowsでは、私はGetTempPath()を使用しています。

答えて

2

私は、この優れた記事では、ここで尋ねる前にやったことを難しくグーグル私の答えを見つけた:

私はキャッシュディレクトリ(NSCachesDirectory)があることがわかった記事や様々なオプションを読む

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

私のファイルを保存する正しい場所。それらを「アプリケーションサポート」に配置すると、それらがタイムマシンによってバックアップされます。だからここ

は私がやったことです:

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を使用してこのディレクトリの名前を付けるという一般的な方法があります。

このディレクトリは、アプリケーションで必要なファイルは保存しますが、ユーザーのファイルは保存しません。

関連する問題