0

コードは以下にコピーされます。アプリのサンドボックスの外部に書き込むことができることを知っているので、ドキュメントディレクトリを使用しています。また、パスを決定するために使用していた文字列を、NSFileManagerによって作成された文字列と比較します。これらは同じです。みなさんはどう思いますか?

- (NSString *)documentsDirectory
{
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    return [paths objectAtIndex:0];
}

- (void) whateverFunction{
    NSString *memfileName = @"memmapfile.map";

    NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:memfileName];

    NSLog(@"Here is the filePath: %@", filePath);

    NSLog(@"Other        version: %s", [[NSFileManager defaultManager] fileSystemRepresentationWithPath:filePath]);
    int memFD = open([filePath cStringUsingEncoding:NSASCIIStringEncoding], O_RDWR);
    NSLog(@"I am getting -1 for memFD: %d", memFD);
}
4

1 に答える 1

1

あなたのファイルはまだ存在していないと思いますので、もちろん開くことはできません。開いているフラグにO_CREATを追加して、存在しない場合に作成されるようにする必要があります。

int memFD = open([filePath cStringUsingEncoding:NSASCIIStringEncoding], O_RDWR|O_CREAT);
于 2013-02-06T19:02:17.243 に答える