0

/Libraryにあるファイルをフォルダにコピーしたいのですが/User/Library/AddressBook/Sample/、使用しました:

[[NSFileManager defaultManager] copyItemAtPath: @"/Library/MyFile.mp3" 
                                        toPath: @"/User/Library/AddressBook/Sample/MyFile.mp3" 
                                         error: &error];

しかし、「操作を完了できませんでした」というエラーが発生しました。そのようなファイルはありませんまたは

ディレクトリ`

私は脱獄したiPhoneに取り組んでいます。

4

2 に答える 2

0

ディレクトリ:

/User/Library/AddressBook/Sample/

通常、電話機には存在しません。Samplemp3 ファイルをサブディレクトリにコピーする前に、サブディレクトリを追加しましたか?

メソッドではNSFileManager、エラー オブジェクトを使用してデバッグを支援することもお勧めします。

NSError* error;
[[NSFileManager defaultManager] copyItemAtPath:@"/Library//MyFile.mp3" toPath: @"/User/Library/AddressBook/Sample/MyFile.mp3" error:&error];

if (error != nil) {
    NSLog(@"Error message is %@", [error localizedDescription]);
}

また、 のつづりに誤りがあるようですがcopyItemAtPath、おそらくそれは質問だけであり、コードではありませんか? 何はともあれ、一度ご確認ください。

また、パスにも二重スラッシュ ( //) がありますが、それが問題になるとは思いません。取り出して、入力するときは注意してください:)

アップデート

このアプリを通常どおりに実行しているが、ジェイルブレイクされた電話で実行している場合、アプリはそれらのディレクトリにアクセスできません。ジェイルブレイクされたスマートフォンに通常どおりインストールされたアプリは、まだサンドボックス化されています。ジェイルブレイクによって、電話のすべてのルールが削除されるわけではありません。真のジェイルブレイク アプリと同様に、アプリを にインストールすると/Applications、そのコードが機能するはずです。

于 2013-03-22T08:15:57.230 に答える
0
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
NSLog(@"%@",libraryDirectory); // Library path
NSString *AddressBookPath = [libraryDirectory stringByAppendingPathComponent:@"AddressBook"];

if (![[NSFileManager defaultManager] fileExistsAtPath:AddressBookPath])
{        
    NSError* error;
    // Create "AddressBook Dir"
    if([[NSFileManager defaultManager] createDirectoryAtPath:AddressBookPath withIntermediateDirectories:NO attributes:nil error:&error])
    {
        // Create "Sample Dir"
        NSString *samplePath = [AddressBookPath stringByAppendingPathComponent:@"Sample"];
        if (![[NSFileManager defaultManager] fileExistsAtPath:AddressBookPath])
        {                
            NSError* error;
            if([[NSFileManager defaultManager] createDirectoryAtPath:AddressBookPath withIntermediateDirectories:NO attributes:nil error:&error])
            {
                // Copy Files Now
                NSError* error;
                NSString *fromPath = [libraryDirectory stringByAppendingPathComponent:@"MyFile.mp3"];
                NSString *toPath = [samplePath stringByAppendingPathComponent:@"MyFile.mp3"];
                [[NSFileManager defaultManager] copyItemAtPath:fromPath toPath:toPath error:&error];

                if (error != nil)
                {
                    NSLog(@"Error message is %@", [error localizedDescription]);
                }
            }
        }
    }
    else
    {
        NSLog(@"[%@] ERROR: attempting to write create MyFolder directory", [self class]);
        NSAssert( FALSE, @"Failed to create directory maybe out of disk space?");
    }
}
于 2013-03-22T08:50:46.057 に答える