0

私は NSFileManager を使用しており、ファイルをパス「/var/mobile/Applications/7AC2295E-2775-41EA-B017-AB4048A09F0C/Document」にコピーしようとしていますが、ファイルは正常にコピーされます。

しかし、「7AC2295E-2775-41EA-B017-AB4048A09F0C」のパスは、アプリを削除して再度インストールするたびにランダムに変更されます。それで、私のアプリの正しいパスを取得したり、ファイル名を検索したりする方法はありますか? ファイルが存在する場合は、ファイルを置き換えますか? どうもありがとう。

4

3 に答える 3

0

アプリケーションが Documents ディレクトリにファイルを書き込む必要がある場合。
次のようなものを使用します:

NSString  *filePath = NSHomeDirectory();

次に、実際のファイル名を filePath に追加します。
次に、FileManager 呼び出しで filePath を使用します。

于 2013-03-26T23:59:06.797 に答える
0

絶対パスを使用する必要はありません。次のようなものを使用してください

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
[[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle]pathForResource:@"test" ofType:@"txt"] toPath:[documentsDirectory stringByAppendingPathComponent:@"test.txt"] error:nil];

test.txtこれは、ファイルをアプリ バンドルからドキュメント ディレクトリにコピーする方法を示しています。このようなことをしてファイルを作成しますtest.txt

[[NSFileManager defaultManager] createFileAtPath:[documentsDirectory stringByAppendingPathComponent:@"test.txt"] contents:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://a-cstudios.com/text.json"]] attributes:nil];

編集

これを使用していて、ジェイルブレイクされたデバイスで使用したい場合、サンドボックスに何かを配置することは、前に述べたのと同じであるため、UUID を使用する必要はありません。システムディレクトリに何かを入れたい場合は、 のようなものを使用するか/usr/include/、必要な場所に置きます。別のアプリ サンドボックスに何かを配置するに、完全なパスを使用する必要があり、サンドボックスの一部ではない UUID を知っている必要があります。したがって、作成したアプリにファイルをコピーする場合を除き完全なパスを使用する必要があります。

于 2013-03-26T23:52:40.893 に答える
0

Documentsアプリのサンドボックス内のディレクトリにアクセスする適切な方法は次のとおりです。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths[0];

次に、パスを作成します。

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"filename.ext"];
于 2013-03-26T23:56:39.640 に答える