2012-12-13 126 views
0

在我的應用程序保存文檔Directory.then以後錄音文件會從文件目錄中的所有下列文件和顯示我的mainClass所有這些文件在那裏我的UITableView它。 當我點擊這個mainClass泰伯維的任何行它轉到下一個類,其中i播放此文件,刪除此文件,該文件發送到我的收藏記錄類在那裏我有泰伯維爲it.Now我的播放按鈕的操作方法和刪除按鈕行動方法工作正常,但我不知道如何發送這個文件到我的Favurite類Tableview.now我在這裏顯示我的刪除按鈕通過我們可以得到的基本想法的代碼。如何從一個文檔文件夾獲取文件到另一個文檔文件夾?

-(IBAction)deleteFile 
{ 
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docsDir = [dirPaths objectAtIndex:0]; 
    NSString *documentPath = [docsDir stringByAppendingPathComponent:@"MyRecordings"]; 
    NSString *soundFilePath = [documentPath stringByAppendingPathComponent:fileToPlay]; 
    recordedTmpFile = [NSURL fileURLWithPath:soundFilePath]; 
    [[NSFileManager defaultManager] removeItemAtURL:recordedTmpFile error:nil]; 

} 

正如我的刪除按鈕的代碼展示我們如何刪除這是我從MainTableview。現在選擇當前的錄音文件,如果用戶希望將當前的錄音文件發送到我的收藏類泰伯維而不是刪除它,然後我是否使用這裏的另一個文件夾如果答案是肯定的?那麼我們怎樣才能在這個新的Document文件夾中保存當前文件(recordedTmpFile)。

-(IBAction)AddToFavourite 
{ 
NSArray *dirPaths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docsDir1 = [dirPaths1 objectAtIndex:0]; 
NSString *documentPath1 = [docsDir1 stringByAppendingPathComponent:@"MyFovouriteRecordings"]; 

// How to pass here the Current Recording File (recordedTmpFile) to this new document Folder. 
} 

當我的NSLog recordedTmpFile它顯示的結果:文件://localhost/Users/Umar/Library/Application%20Support/iPhone%20Simulator/4.2/Applications/9219677A-B0E3-4B78-B2E5-FEA49D689618/Documents/MyRecordings/06:12月:12_05:54:07%20PM +有源%20song

任何幫助將appriated.Thanks

+1

可能是更好的方法,而不是朝着最喜歡的文件夾,這個文件中,您應該創建收藏數據庫,節省AddToFavourite行動在數據庫中的文件路徑,只要你想展示的收藏記錄從數據庫中提取數據,並顯示在tableview中。 – prasad

+0

快速響應謝謝@prasad如果我們從這個文件中FavouritClass tableview.Beacuse我已經使用的文檔文件夾,我的MainTableview.Canü請給我這個任何想法保存這個當前文件到另一個文件夾,然後獲取數據。 – NSCool

+0

可以使用http://stackoverflow.com/questions/1762836/create-a-folder-inside-documents-folder-in-ios-apps創建收藏夾文件夾和複製文件使用的NSFileManager *文件管理器=的NSFileManager defaultManager] ; [fileManager copyItemAtPath:docPath toPath:favFloderPath error:&error]; – prasad

回答

1
-(IBAction)AddToFavourite { 
    NSArray *dirPaths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docsDir1 = [dirPaths1 objectAtIndex:0]; 
    NSString *documentPath1 = [docsDir1 stringByAppendingPathComponent:@"MyFovouriteRecordings"]; 
    NSString *soundFilePath1 = [documentPath1 stringByAppendingPathComponent:fileToPlay]; 
    // How to pass here the Current Recording File (recordedTmpFile) to this new document Folder. 

    // First check if the directory existst 
    if([[NSFileManager defaultManager] fileExistsAtPath:documentPath1]==NO) { 
     NSLog(@"Creating content directory: %@",documentPath1); 
     NSError *error=nil; 
     if([[NSFileManager defaultManager] createDirectoryAtPath:documentPath1 withIntermediateDirectories:NO attributes:nil error:&error]==NO) { 
      NSLog(@"There was an error in creating the directory: %@",error); 
     } 
    } 

    //then get the origin file path 
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docsDir = [dirPaths objectAtIndex:0]; 
    NSString *documentPath = [docsDir stringByAppendingPathComponent:@"MyRecordings"]; 
    NSString *soundFilePath = [documentPath stringByAppendingPathComponent:fileToPlay]; 

    //Then convert paths to URL 
    NSURL* originURL = [NSURL fileURLWithPath:soundFilePath]; 
    NSURL* destinationURL = [NSURL fileURLWithPath:soundFilePath1]; 

    //Then, you have to copy the file 
    [[NSFileManager defaultManager] copyItemAtURL:destinationURL toURL:originURL error:NULL]; 
} 

應該這樣做,告訴我,如果有任何錯誤。

1

只需創建的NSData的實例,該原始文件。比寫它到另一個位置。

//write file to the other location 
NSData *myData = [[NSData alloc] initWithContentsOfFile:originalPath]; 

[myData writeToFile:newDataPath options:NSDataWritingAtomic error:&error]; 

//delete file from original location 
NSFileManager *fileManager = [[NSFileManager alloc] init]; 

[fileManager removeItemAtPath:originalPath error:&removeError]; 
+0

請看我的編輯。是否需要使用Code.please創建另一個文檔文件夾根據我上面解釋的要求編輯您的答案。 – NSCool

相關問題