2

Cocoaを使用してプログラムでフォルダーを作成しようとしています。

カテゴリを作成しNSStringましたが、次の関数があります。

- (void)createAsFolder
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError* err = nil;

    [fileManager createDirectoryAtPath:self withIntermediateDirectories:YES attributes:nil error:&err];

    if (err)
    {
        NSLog(@"ERROR : %@",err);
    }
}

したがって、簡単に言えば、私たちが持っているとしましょうNSString* path = @"/some/path/is/here";、私たちはそれを簡単に作成することができます:

[path createAsFolder];

重要なのは、通常のフォルダーでは完全に機能しますが、指定されたパスがバンドル(つまり、拡張子付き)の場合は機能しないということです。例えば

NSString* path = @"/this/is/a/path/to/some/bundle.bun";

[path createAsFolder];

上記は機能しません。

それを修正する方法について何かアイデアはありますか?

4

2 に答える 2

3

OK、ここに答えがあります(@thundersteeleに感謝します)、ファイルツリー全体をある場所から別の場所にコピーしたい場合:

NSFileWrapper* w = [[NSFileWrapper alloc] initWithPath:initialPath];

[w writeToFile:destinationPath atomically:YES updateFilenames:YES];

そして、うん:サブフォルダーがパッケージ/バンドルであるかどうかにかかわらず、まったく問題はありません。そんなに難しくないですよね?たった2行...笑

于 2012-04-15T00:19:12.850 に答える
2

NSFileWrapper代わりに試してください。やりたいことができると思います。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSFileWrapper_Class/Reference/Reference.html

于 2012-04-15T00:09:11.837 に答える