2011-07-30 14 views
6

私のアプリケーションのカメラとビデオ録画を一時ディレクトリの別のフォルダに入れてしばらく保存したいのですが。タスクが完了すると、データベースに保存されます。一時ディレクトリに画像や録画ファイルを保存する方法は?

&ビデオ録画ファイルの写真をtempディレクトリの別のフォルダに保存するにはどうすればよいですか?

答えて

23

あなたはこのTOTを取得するために、彼は一時ファイルを格納するフォルダをキャッシュするために探している:あなたが欲しいディレクトリを作成し、削除するためにNSFileManagerを使用することができ、そこから

NSString* path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, 
                 NSUserDomainMask, 
                 YES) lastObject]; 

。また、ファイルシステムの他の部分と同様にファイルを格納します。システムが今すぐキャッシュディレクトリをパージすることに気をつけてください。

アプリの再起動の間にファイルが残っていたり消えたりすることは決してありません。

+0

コンパイラは..、 "_NSSearchPathForDirectoriesInDomain"のようなエラーを表示しています。参照フレームワークに含まれていないものはありますか? –

+0

@iApple - 申し訳ありませんが、 's'は関数名です。答えを更新しました。 – PeyloW

+2

元の質問の問題を正しく解決していますが、受け入れられた回答です。本当の一時ディレクトリを提供していませんでした。 +1正しい答えのために –

1

あなたは

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *tempFolderPath = [documentsDirectory stringByAppendingPathComponent:@"Temp"]; 

[[NSFileManager defaultManager] createDirectoryAtPath:tempFolderPath withIntermediateDirectories:YES attributes:nil error:NULL]; 
+1

あなたがドキュメントディレクトリを避けようとしているなら、以下のより良い答えは、 –

8

はこの試みる...あなた自身のTempフォルダを作成することができます:あなたは一時ディレクトリからすべてのファイルを削除したい場合は、これを使用

NSString *tmpDirectory = NSTemporaryDirectory(); 
NSString *tmpFile = [tmpDirectory stringByAppendingPathComponent:@"temp.txt"]; 
NSLog(@"Temp File:%@", tmpFile); 
+0

このtmpファイルが存在するかどうかを検証する方法は? – jose920405

2

を。

//cleanup temp files 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *paths = NSTemporaryDirectory(); 

    NSArray *contents = [fileManager contentsOfDirectoryAtPath:paths error:NULL]; 
    NSEnumerator *e = [contents objectEnumerator]; 
    NSString *filename; 

    //NSLog(@"paths: %@ ... contents: %@ ...",paths, contents); 

    while ((filename = [e nextObject])) 
    { 

     [fileManager removeItemAtPath:[paths stringByAppendingPathComponent:filename] error:NULL]; 
    } 
2

必要に別のディレクトリに写真や動画を保存するにはTempディレクトリから画像

NSString *tmpDirectory = NSTemporaryDirectory(); 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 
NSArray *cacheFiles = [fileManager contentsOfDirectoryAtPath:tmpDirectory error:&error]; 
for (NSString *file in cacheFiles) 
{ 
    NSLog(@"%@",file); 
    error = nil; 
    if ([file.pathExtension isEqual:@"png"]){ 
     NSString *filePath = [tmpDirectory stringByAppendingPathComponent:file]; 
     UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath]; 
    } 
} 
0

を取得し、表示するにはtempディレクトリに

-(void)savePhotoToAlbum:(UIImage*)imageToSave withName:(NSString*)imageName { 
    NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES]; 
    NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:imageName] URLByAppendingPathExtension:@"png"]; 
    NSLog(@"fileURL: %@", [fileURL path]); 
    NSData *pngData = UIImagePNGRepresentation(imageToSave); 

    [pngData writeToFile:[fileURL path] atomically:YES]; //Write the file 
} 

を画像を保存するにはそこにディレクトリパスを変更し、データベースへのパスを保存します。下のコードをチェックして、ドキュメントディレクトリにフォルダを作成し、一意の名前でファイルを保存してください。

NSError *error; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 

NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@“/images”]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
{ 

    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; 

} 

NSString *destinationPath = [dataPath stringByAppendingFormat:@"/output_%@.jpg", [dateFormatter stringFromDate:[NSDate date]]]; 
関連する問題