2011-07-30 12 views

Odpowiedz

23

Szukasz tego, aby uzyskać tot on buforuje folder do przechowywania plików tymczasowych:

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

Stamtąd można użyć NSFileManager tworzyć i usuwać katalogi, które chcesz. Przechowuj pliki tak, jak każdą inną część systemu plików. Pamiętaj tylko, że system będzie czyścił katalog pamięci podręcznych od czasu do czasu.

Nigdy nie należy polegać na pliku, który pozostał lub nie zniknie, między ponownymi uruchomieniami aplikacji.

+0

Kompilator podaje mi błąd podobny do .., "_NSSearchPathForDirectoriesInDomain", do którego się odwołano. Czy pominięto jakiekolwiek ramy odniesienia? –

+0

@iApple - Przepraszam, że przegapiłem 's' to nazwa funkcji. Zaktualizowano odpowiedź. – PeyloW

+2

Przyjęta odpowiedź, chociaż poprawnie rozwiązuje problem pierwotnego pytania. Nie podano prawdziwego katalogu tymczasowego. +1 dla właściwej odpowiedzi –

1

Możesz stworzyć swój własny folder Temp ...

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

Lepsza odpowiedź poniżej, jeśli próbujesz uniknąć katalogu dokumentów. –

8

spróbuj tego:

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

W jaki sposób sprawdzić, czy plik tmpFile istnieje? – jose920405

2

Jeśli chcesz usunąć wszystkie pliki z katalogu tymczasowego, a następnie użyć tego.

//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

Aby zapisać obraz w katalog 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 
} 

Aby dostać i wyświetlania obrazów z katalogu 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

Aby zapisać zdjęć i filmów wideo w innym katalogu trzeba zmień tam ścieżkę katalogu i zapisz tam ścieżkę do twojej bazy danych. sprawdź poniższy kod, aby utworzyć folder w katalogu dokumentów i zapisz plik o unikalnej nazwie.

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]]];