29

わかった、

そのため、更新する必要があるCydiaアプリがあります。Cydia アプリには Documents フォルダーがないことを認識しているため、作成する必要があります。そして、これが以前にiOS 4で作成した方法です(iOS 5では機能しません):

mkdir("/var/mobile/Library/APPNAME", 0755);
mkdir("/var/mobile/Library/APPNAME/Documents", 0755);

NSString *foofile = @"/var/mobile/Library/APPNAME/Documents/database.db";
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];

if (fileExists == TRUE) {
    NSLog(@"already exists");
} else {
    NSLog(@"doesn't exists");
    NSFileManager *fileManager = [[NSFileManager defaultManager]autorelease];
    NSError *error;
    NSString *documentDBFolderPath = @"/var/mobile/Library/APPNAME/Documents/database.db";

    NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.db"];
    [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];

}

また、データベース ファイルをそのフォルダーにコピーするコードも含めました。それは機能しません (SSH 経由でフォルダーを手動で作成しても)。

助けてください!ありがとう。

4

5 に答える 5

63

ディレクトリを作成するために私が作った方法は次のとおりです

-(void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath
{
    NSString *filePathAndDirectory = [filePath stringByAppendingPathComponent:directoryName];
    NSError *error;

    if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory
                                   withIntermediateDirectories:NO
                                                    attributes:nil
                                                         error:&error])
    {
        NSLog(@"Create directory error: %@", error);
    }
}
于 2011-11-06T20:38:28.230 に答える
5

を使ってみてくださいcreateDirectoryAtURL:withIntermediateDirectories:attributes:error:

NSFileManagerクラスリファレンス

createDirectoryAtURL:withIntermediateDirectories:attributes:error:

指定されたパスに、指定された属性を持つディレクトリを作成します。

パラメーター

url- 作成するディレクトリを指定するファイル URL。相対パスを指定する場合は、対応する NSURL オブジェクトを作成する前に、現在の作業ディレクトリを設定する必要があります。このパラメーターは nil であってはなりません。

createIntermediates- の場合YES、このメソッドは、url のディレクトリ作成の一部として、存在しない親ディレクトリを作成します。NOの場合、中間の親ディレクトリが存在しない場合、このメソッドは失敗します。このメソッドは、中間パス要素のいずれかがディレクトリではなくファイルに対応している場合にも失敗します。

attributes- 新しいディレクトリと新しく作成された中間ディレクトリのファイル属性。所有者とグループの番号、ファイルのアクセス許可、および変更日を設定できます。このパラメーターに nil を指定するか、特定の値を省略すると、説明で説明されているように、1 つ以上のデフォルト値が使用されます。このディクショナリに含めることができるキーのリストについては、属性ディクショナリでキーとして使用されるグローバル定数の一覧を示す「定数」 (54 ページ) セクションを参照してください。NSFileHFSCreatorCode や NSFileHFSTypeCode などの一部のキーは、ディレクトリには適用されません。

error- 入力時、エラー オブジェクトへのポインター。エラーが発生した場合、このポインターは、エラー情報を含む実際のエラー オブジェクトに設定されます。エラー情報が必要ない場合は、このパラメータに nil を指定できます。


YESディレクトリが作成されたか既に存在する場合は値を返し、エラーが発生した場合は NO を返します。

于 2011-11-06T20:30:12.767 に答える
3

NSFileManager のクラス リファレンスを確認してください。必要なフォルダを作成するにはcreateDirectoryAtPath:withIntermediateDirectories:attributes:error:

于 2011-11-06T20:20:36.737 に答える
1

iOS5ファイルシステムの素晴らしいTechotopia解説

于 2013-03-22T01:04:57.613 に答える