我正在生成一个PDF文件并将其保存到我的设备,然后从我的应用程序中通过电子邮件发送它。目前,它没有得到清除手动或自动,所以我在看NSTemporaryDirectory。我已经看了各种网站,也在这里为我的特定查询的答案,但找不到它。
我有以下功能:
+(NSString *)getTempFilePathName {
NSString *tempFilePathName = nil;
NSString *tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tempfile.XXXXXX"];
const char *tempFileTemplateCString = [tempFileTemplate fileSystemRepresentation];
char *tempFileNameCString = (char *)malloc(strlen(tempFileTemplateCString) + 1);
strcpy(tempFileNameCString, tempFileTemplateCString);
int fileDescriptor = mkstemp(tempFileNameCString);
if (fileDescriptor != -1) {
// File opened successfully
tempFilePathName = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:tempFileNameCString length:strlen(tempFileNameCString)];
close(fileDescriptor);
}
free(tempFileNameCString);
return tempFilePathName;
}
这返回给我一个包含完整路径和文件名的NSString,以文件名的'XXXXXX'组件结尾,替换为唯一的字母和数字组合。当我用它来保存PDF文件时,我需要修复扩展名为"。PDF"的"XXXXXX"位。最好我也想指定文件名本身,比如"Order-123.PDF"。
我可以编辑我的方法来传递一个文件名并在stringByAppendingPathComponent参数中使用它吗?每次调用此方法生成的目录名是否唯一?
我自己解决了这个问题。在调用上述例程的行之后,我做:
NSString *newFilePath = [tempNameStub stringByAppendingPathExtension:@"pdf"];
将.pdf
添加到末尾