这是首选方法,它使用 URL 直接获取到 tmp 目录的链接,然后返回该目录的文件 URL (pkm.jpg):
斯威夫特 4.1
let url = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
.appendingPathComponent("pkm", isDirectory: false)
.appendingPathExtension("jpg")
// Then write to disk
if let data = UIImageJPEGRepresentation(image, 0.8) {
do {
try data.write(to: url)
} catch {
print("Handle the error, i.e. disk can be full")
}
}
斯威夫特 3.1
let tmpURL = try! URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
.appendingPathComponent("pkm")
.appendingPathExtension("jpg")
print("Filepath: \(tmpURL)")
请注意,不处理可能的错误!
斯威夫特 2.0
let tmpDirURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true)
let fileURL = tmpDirURL.URLByAppendingPathComponent("pkm").URLByAppendingPathExtension("jpg")
print("FilePath: \(fileURL.path)")
Objective-C
NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"pkm"] URLByAppendingPathExtension:@"jpg"];
NSLog(@"fileURL: %@", [fileURL path]);
请注意,某些方法仍将路径请求为字符串,然后使用 将[fileURL path]
路径作为字符串返回(如上面 NSLog 中所示)。升级当前应用程序时,文件夹中的所有文件:
<Application_Home>/Documents/
<Application_Home>/Library/
保证从旧版本(不包括<Application_Home>/Library/Caches
子目录)中保留。使用Documents
您可能希望用户有权访问的Library
文件的文件夹以及应用程序使用且用户不应该看到的文件的文件夹。
另一种更长的方法可能是获取 tmp 目录的 url,首先获取 Document 目录并剥离最后一个路径组件,然后添加 tmp 文件夹:
NSURL *documentDir = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSURL *tmpDir = [[documentDir URLByDeletingLastPathComponent] URLByAppendingPathComponent:@"tmp" isDirectory:YES];
NSLog(@"tmpDir: %@", [tmpDir path]);
然后我们可以在那里寻址一个文件,即 pkm.jpg,如下所示:
NSString *fileName = @"pkm";
NSURL *fileURL = [tmpDir URLByAppendingPathComponent:fileName isDirectory:NO];
fileURL = [fileURL URLByAppendingPathExtension:@"jpg"];
字符串也可以做到这一点,在旧的 iOS 系统上使用的方式,但上面的第一个 URL 方法现在是推荐的(除非你正在写入旧系统:iPhone OS 2 或 3):
NSString *tmpDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
tmpDir = [[tmpDir stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"tmp"];
NSString *filePath = [[tmpDir stringByAppendingPathComponent:@"pkm"] stringByAppendingPathExtension:@"jpg"];