0

だから私は、読み取り可能なファイルのコピーを作成できない理由を理解しようとしています。moveItemAtPath、copyItemAtPath、およびcreateFileAtPathを試しました。毎回、元のパスからデータを読み取ることは正常に機能しますが、新しいファイルパスからデータを読み取ると、0バイトのnilNSdataオブジェクトになります。

NSData* tempData = [NSData dataWithContentsOfURL:tempSoundFile]; // reads just fine

NSError* error;
NSFileManager* fileMgr = [NSFileManager defaultManager];
NSString* docDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString* uniqueFileName = [[NSString stringWithFormat:@"%@-%@", description.text, [NSDate date]] MD5];
NSString* newAudioFile = [NSString stringWithFormat:@"%@/%@.caf", docDir, uniqueFileName];

if (LOG) { NSLog(@"Copying %@ to %@", tempSoundFile.path, newAudioFile); }

// Have tried either or both as well as moveItemAtPath with the same result
[fileMgr createFileAtPath:newAudioFile contents:tempData attributes:nil];
//[fileMgr copyItemAtPath:tempSoundFile.path toPath:newAudioFile error:&error];

NSData* audioAfter = [NSData dataWithContentsOfURL:[NSURL URLWithString:newAudioFile]]; // nil data

ログ出力:

/var/mobile/Applications/19531C7F-F408-45B9-B417-09315BB15B49/Documents/8554temp.cafを/var/mobile/Applications/19531C7F-F408-45B9-B417-09315BB15B49/Documents/933becb02783c8f9c715acbdca0e15にコピーしています

私が間違っていることについて誰かが何か提案がありますか?ありがとう

4

1 に答える 1

1

最後の行を次のように変更します。

SData* audioAfter = [NSData dataWithContentsOfFile:newAudioFile]; // NOT nil

パスのURLNSURLは、最初にfile://を期待しているためです。

于 2012-04-26T19:59:10.613 に答える