2013-03-20 46 views
0

如何使用枚舉NSMoviesDirectory或NSMusicDirectory。文檔說,我們可以從ios 4開始使用它們,但在我的應用程序中我找不到如何在那裏複製文件的方法? 爲什麼蘋果如果我們不能使用它們就添加了這些枚舉?NSSearchPathDirectory的一些用途枚舉

回答

-1

只寫樣本,音樂目錄(或別的東西)默認情況下不存在,你應該編碼創建它。 樣本:

- (void)testDir 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSMusicDirectory, NSUserDomainMask, YES); 
    NSString *musicDirectory = [paths objectAtIndex:0]; 
    NSFileManager *defaultFileManager = [NSFileManager defaultManager]; 
    if (![defaultFileManager fileExistsAtPath:musicDirectory]) { 
     [defaultFileManager createDirectoryAtPath:musicDirectory withIntermediateDirectories:NO attributes:nil error:NULL]; 
    } 
    NSString *testDataFilePath = [musicDirectory stringByAppendingPathComponent:@"test.mp3"]; 
    unsigned int bufferLength = 1024; 
    void *buffer = malloc(1024 * sizeof(char)); 
    NSData *testData = [[NSData alloc] initWithBytes:buffer length:bufferLength]; 
    free(buffer); buffer = NULL; 
    if (![testData writeToFile:testDataFilePath atomically:NO]) { 
     NSLog(@"fail to save data"); 
    } 
    [testData release]; testData = nil; 
} 
1

默認情況下,「電影」,「音樂」和「圖片」會不會在目錄中。 您必須創建路徑並放置數據文件。

如:NSMoviesDirectory

NSArray * paths = NSSearchPathForDirectoriesInDomains (NSMoviesDirectory,NSUserDomainMask, YES); 
NSString * documentsDirectory = [paths objectAtIndex:0]; 
NSError * error; 
if (![[NSFileManager defaultManager] fileExistsAtPath: documentsDirectory]) 
{ 
    [[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:NO attributes:nil error:&error]; 
    NSString * resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sleep.mp4"]; 
    [[NSFileManager defaultManager] copyItemAtPath:resourceDBFolderPath toPath:[documentsDirectory stringByAppendingPathComponent:@"sleep.mp4"] error:&error]; 

} 
else 
{ 
    NSString * resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sleep.mp4"]; 
    [[NSFileManager defaultManager] copyItemAtPath:resourceDBFolderPath toPath:[documentsDirectory stringByAppendingPathComponent:@"sleep.mp4"] error:&error]; 

} 
+0

這項工作的罰款對我來說Mr.toohtik – Vinodh 2013-03-20 13:00:28

+0

都能跟得上。謝謝你的迴應。但它首先是我試圖去做的。對我來說,它不工作,因爲錯誤:「錯誤域= NSCocoaErrorDomain代碼= 513 NSFileWriteNoPermissionError」。但爲什麼蘋果需要我們分離資源?原因之一 - 它是因爲蘋果在應用程序中掃描每個電影文件夾,然後爲視頻應用程序生成所有電影列表。但我無法檢查這個問題,因爲無法創建文件夾並在那裏複製 – toohtik 2013-03-20 13:19:15