8

何らかの理由No such file or directoryで、パスをドキュメント パスに変換したにもかかわらず、fopen でエラーが発生します。

NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [docsPath stringByAppendingPathComponent:filename];

メソッドを使用して NSString を渡し、UTF8String読み取りモードでのみ開きます

if ((fh=fopen(filename, "r+b")) == NULL){
    perror("fopen");
    return -1;
}

ファイル名を開こうとすると、次のフルパスが出力されます(アプリケーションの実際のディレクトリ名の正確な値を削除しました)

/var/mobile/Applications/#####/Documents/testImages.pak

fopen がファイルを検出しないのはなぜですか? 私はそれをターゲットに追加し、ファイルインスペクターの場所設定を変更しようとしましRelative to GroupRelative to Project

4

1 に答える 1

11

次の方法を使用して NSString を char* に変換する必要があります。そうしないと、ファイル システムに正しくマップされません。

    char const *path_cstr = [[NSFileManager defaultManager] fileSystemRepresentationWithPath:pathString];

これで、fopen() で直接使用できます。

于 2012-05-20T06:02:50.687 に答える